home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 4
/
Aminet 4 - November 1994.iso
/
aminet
/
dev
/
obero
/
oberon_lib.lha
/
oberon-a
/
source1.lha
/
source
/
Amiga
/
Graphics.mod
< prev
next >
Wrap
Text File
|
1994-08-08
|
111KB
|
3,382 lines
(***************************************************************************
$RCSfile: Graphics.mod $
Description: Interface to graphics.library
Created by: fjc (Frank Copeland)
$Revision: 3.2 $
$Author: fjc $
$Date: 1994/08/08 00:54:05 $
Includes Release 40.15
(C) Copyright 1985-1993 Commodore-Amiga, Inc.
All Rights Reserved
Oberon-A interface Copyright © 1994, Frank Copeland.
This file is part of the Oberon-A Interface.
See Oberon-A.doc for conditions of use and distribution.
***************************************************************************)
MODULE Graphics;
(*
** $C- CaseChk $I- IndexChk $L+ LongAdr $N- NilChk
** $P- PortableCode $R- RangeChk $S- StackChk $T- TypeChk
** $V- OvflChk $Z- ZeroVars
*)
IMPORT E := Exec, H := Hardware, U := Utility, SYS := SYSTEM;
(**
** All pointers are declared forward here for convenience.
*)
TYPE
RectanglePtr * = CPOINTER TO Rectangle;
Rect32Ptr * = CPOINTER TO Rect32;
PointPtr * = CPOINTER TO Point;
BitMapPtr * = CPOINTER TO BitMap;
ExtendedNodePtr * = CPOINTER TO ExtendedNode;
AnalogSignalIntervalPtr * = CPOINTER TO AnalogSignalInterval;
SpecialMonitorPtr * = CPOINTER TO SpecialMonitor;
MonitorSpecPtr * = CPOINTER TO MonitorSpec;
QueryHeaderPtr * = CPOINTER TO QueryHeader;
DisplayInfoPtr * = CPOINTER TO DisplayInfo;
DimensionInfoPtr * = CPOINTER TO DimensionInfo;
MonitorInfoPtr * = CPOINTER TO MonitorInfo;
NameInfoPtr * = CPOINTER TO NameInfo;
VSpritePtr * = CPOINTER TO VSprite;
BobPtr * = CPOINTER TO Bob;
AnimCompPtr * = CPOINTER TO AnimComp;
DBufPacketPtr * = CPOINTER TO DBufPacket;
AnimObPtr * = CPOINTER TO AnimOb;
CollTablePtr * = CPOINTER TO CollTable;
AreaInfoPtr * = CPOINTER TO AreaInfo;
TmpRasPtr * = CPOINTER TO TmpRas;
GelsInfoPtr * = CPOINTER TO GelsInfo;
RastPortPtr * = CPOINTER TO RastPort;
CopInsPtr * = CPOINTER TO CopIns;
CopInsCLPtr * = CPOINTER TO CopInsCL;
CprlistPtr * = CPOINTER TO Cprlist;
CopListPtr * = CPOINTER TO CopList;
CopList13Ptr * = CPOINTER TO CopList13;
UCopListPtr * = CPOINTER TO UCopList;
ViewPortPtr * = CPOINTER TO ViewPort;
ViewPtr * = CPOINTER TO View;
ViewExtraPtr * = CPOINTER TO ViewExtra;
ViewPortExtraPtr * = CPOINTER TO ViewPortExtra;
RasInfoPtr * = CPOINTER TO RasInfo;
ColorMapPtr * = CPOINTER TO ColorMap;
LayerInfoPtr * = CPOINTER TO LayerInfo;
LayerPtr * = CPOINTER TO Layer;
ClipRectPtr * = CPOINTER TO ClipRect;
RegionRectanglePtr * = CPOINTER TO RegionRectangle;
RegionPtr * = CPOINTER TO Region;
SimpleSpritePtr * = CPOINTER TO SimpleSprite;
TextAttrPtr * = CPOINTER TO TextAttr;
TTextAttrPtr * = CPOINTER TO TTextAttr;
TextFontPtr * = CPOINTER TO TextFont;
TextFontExtensionPtr * = CPOINTER TO TextFontExtension;
ColorFontColorsPtr * = CPOINTER TO ColorFontColors;
ColorTextFontPtr * = CPOINTER TO ColorTextFont;
TextExtentPtr * = CPOINTER TO TextExtent;
IsrvstrPtr * = CPOINTER TO Isrvstr;
BitScaleArgsPtr * = CPOINTER TO BitScaleArgs;
CopListBasePtr * = CPOINTER TO CopListBasePtr;
PaletteExtraPtr * = CPOINTER TO PaletteExtra;
DBufInfoPtr * = CPOINTER TO DBufInfo;
ExtSpritePtr * = CPOINTER TO ExtSprite;
(*
** $VER: gfx.h 39.5 (19.3.92)
**
** general graphics library definitions
*)
CONST
bitSet * = {15};
bitClr * = {};
TYPE
Rectangle * = RECORD
minX *, minY * : INTEGER;
maxX *, maxY * : INTEGER;
END; (* Rectangle *)
Rect32 * = RECORD
minX *, minY * : LONGINT;
maxX *, maxY * : LONGINT;
END; (* Rect32 *)
Point * = RECORD
x *, y * : INTEGER;
END; (* Point *)
PlanePtr * = E.APTR;
BitMap * = RECORD
bytesPerRow * : E.UWORD;
rows * : E.UWORD;
flags * : E.BSET;
depth * : E.UBYTE;
pad * : E.UWORD;
planes * : ARRAY 8 OF PlanePtr;
END; (* BitMap *)
CONST
(* flags for AllocBitMap, etc. *)
bmClear * = 0;
bmDisplayable * = 1;
bmInterleaved * = 2;
bmStandard * = 3;
bmMinPlanes * = 4;
(* the following are for GetBitMapAttr() *)
bmaHeight * = 0;
bmaDepth * = 4;
bmaWidth * = 8;
bmaFlags * = 12;
(*
** $VER: gfxnodes.h 39.0 (21.8.91)
**
** graphics extended node definintions
*)
TYPE
ExtendedNode * = RECORD (E.Node)
subsystem * : E.UBYTE;
subtype * : E.UBYTE;
library * : LONGINT;
init * : E.PROC;
END; (* ExtendedNode *)
CONST
ssGraphics * = 02H;
viewExtraType * = 1;
viewPortExtraType * = 2;
specialMonitorType * = 3;
monitorSpecType * = 4;
(*
** $VER: monitor.h 39.7 (9.6.92)
**
** graphics monitorspec definintions
*)
TYPE
LONGPROC * = PROCEDURE () : LONGINT;
MonitorSpec * = RECORD (ExtendedNode)
msFlags * : E.WSET;
ratioh * : LONGINT;
ratiov * : LONGINT;
totalRows * : E.UWORD;
totalColorClocks * : E.UWORD;
deniseMaxDisplayColumn * : E.UWORD;
beamCon0 * : E.UWORD;
minRow * : E.UWORD;
special * : SpecialMonitorPtr;
openCount * : E.UWORD;
transform * : LONGPROC;
translate * : LONGPROC;
scale * : LONGPROC;
xoffset * : E.UWORD;
yoffset * : E.UWORD;
legalView * : Rectangle;
maxoscan * : LONGPROC; (* maximum legal overscan *)
videoscan * : LONGPROC; (* video display overscan *)
deniseMinDisplayColumn * : E.UWORD;
displayCompatible * : E.ULONG;
displayInfoDataBase * : E.List;
displayInfoDataBaseSemaphore * : E.SignalSemaphore;
mrgCop * : LONGPROC;
loadView * : LONGPROC;
killView * : LONGPROC;
END; (* MonitorSpec *)
CONST
toMonitor * = 0;
fromMonitor * = 1;
standardXOffset * = 9;
standardYOffset * = 0;
msRequestNTSC * = 0;
msRequestPAL * = 1;
msRequestSpecial * = 2;
msRequestA2024 * = 3;
msDoubleSprites * = 4;
(* obsolete, v37 compatible definitions follow *)
requestNTSC * = 1;
requestPAL * = 2;
requestSpecial * = 4;
requestA2024 * = 8;
defaultMonitorName * = "default.monitor";
ntscMonitorName * = "ntsc.monitor";
palMonitorName * = "pal.monitor";
standardMonitorMask * = requestNTSC + requestPAL;
standardNTSCRows * = 262;
standardPALRows * = 312;
standardColorClocks * = 226;
standardDeniseMax * = 455;
standardDeniseMin * = 93;
standardNTSCBeamCon * = {};
standardPALBeamCon * = {H.displayPAL};
specialBeamcon * =
{ H.varVBlank, H.loLDis, H.varVSync,
H.varHSync, H.varBeam, H.csBlank, H.vSyncTrue };
minNTSCRow * = 21;
minPALRow * = 29;
standardViewX * = 81H;
standardViewY * = 2CH;
standardHBstrt * = 06H;
standardHSstrt * = 0BH;
standardHSstop * = 1CH;
standardHBstop * = 2CH;
standardVBstrt * = 0122H;
standardVSstrt * = 02A6H;
standardVSstop * = 03AAH;
standardVBstop * = 1066H;
vgaColorClocks * = standardColorClocks DIV 2;
vgaTotalRows * = standardNTSCRows * 2;
vgaDeniseMin * = 59;
minVgaRow * = 29;
vgaHBstrt * = 08H;
vgaHSstrt * = 0EH;
vgaHSstop * = 1CH;
vgaHBstop * = 1EH;
vgaVBstrt * = 0000H;
vgaVSstrt * = 0153H;
vgaVSstop * = 0235H;
vgaVBstop * = 0CCDH;
vgaMonitorName * = "vga.monitor";
(* NOTE: VGA70 definitions are obsolete - a VGA70 monitor has never been
* implemented.
*)
vga70ColorClocks * = standardColorClocks DIV 2;
vga70TotalRows * = 449;
vga70DeniseMin * = 59;
minVga70Row * = 35;
vga70HBstrt * = 08H;
vga70HSstrt * = 0EH;
vga70HSstop * = 1CH;
vga70HBstop * = 1EH;
vga70VBstrt * = 0000H;
vga70VSstrt * = 02A6H;
vga70VSstop * = 0388H;
vga70VBstop * = 0F73H;
vga70beamcon * = specialBeamcon / { H.vSyncTrue };
vga70MonitorName * = "vga70.monitor";
broadcastHBstrt * = 01H;
broadcastHSstrt * = 06H;
broadcastHSstop * = 17H;
broadcastHBstop * = 27H;
broadcastVBstrt * = 0000H;
broadcastVSstrt * = 02A6H;
broadcastVSstop * = 054CH;
broadcastVBstop * = 1C40H;
broadcastBeamCon * = { H.loLDis, H.csBlank };
ratioFixedPart * = 4;
ratioUnity * = (*ASH (1, ratioFixedPart)*) 16;
TYPE
AnalogSignalInterval * = RECORD
start * : E.UWORD;
stop * : E.UWORD;
END; (* AnalogSignalInterval *)
SpecialMonitor * = RECORD (ExtendedNode)
spmFlags * : E.WSET;
doMonitor * : LONGPROC;
reserved1 * : LONGPROC;
reserved2 * : LONGPROC;
reserved3 * : LONGPROC;
hblank * : AnalogSignalInterval;
vblank * : AnalogSignalInterval;
hsync * : AnalogSignalInterval;
vsync * : AnalogSignalInterval;
END; (* SpecialMonitor *)
(*
** $VER: display.h 39.0 (21.8.91)
**
** definitions for display control registers
*)
CONST
(* bplcon0 defines *)
mode640 * = 15;
plnCntMsk * = {0..2}; (* how many bit planes? *)
(* 0 = none, 1->6 = 1->6, 7 = reserved *)
plnCntShft * = 12; (* bits to shift for bplcon0 *)
pf2pri * = 6; (* bplcon2 bit *)
colorOn * = 9; (* disable color burst *)
dblpf * = 10;
holdnmodify * = 11;
interlace * = 2; (* interlace mode for 400 *)
(* bplcon1 defines *)
pfaFineScroll * = {0..3};
pfbFineScrollShift * = 4;
pfFineScrollMask * = {0..3};
(* display window start and stop defines *)
diwHorizPos * = {0..6}; (* horizontal start/stop *)
diwVrtclPos * = {0..8}; (* vertical start/stop *)
diwVrtclPosShift * = 7;
(* Data fetch start/stop horizontal position *)
dftchMask * = {0..7};
(* vposr bits *)
vposrlof * = {15};
(*
** $VER: displayinfo.h 39.13 (31.5.93)
**
** definitions for displayinfo database
*)
TYPE
(* the "public" handle to a DisplayInfoRecord *)
DisplayInfoHandle * = CPOINTER TO RECORD END;
CONST
(* datachunk type identifiers *)
dtagDisp * = 80000000H;
dtagDims * = 80001000H;
dtagMntr * = 80002000H;
dtagName * = 80003000H;
TYPE
QueryHeader * = RECORD
structID * : E.ULONG; (* datachunk type identifier *)
displayID * : E.ULONG; (* copy of display record key *)
skipID * : E.ULONG; (* tagSKIP -- see tagitems.h *)
length * : E.ULONG; (* length of local data in double-longwords *)
END; (* QueryHeader *)
DisplayInfo * = RECORD (QueryHeader)
notAvailable * : E.WSET; (* if NULL available, else see defines *)
propertyFlags * : SET; (* Properties of this mode see defines *)
resolution * : Point; (* ticks-per-pixel X/Y *)
pixelSpeed * : E.UWORD; (* aproximation in nanoseconds *)
numStdSprites * : E.UWORD; (* number of standard amiga sprites *)
paletteRange * : E.UWORD; (* distinguishable shades available *)
spriteResolution * : Point; (* std sprite ticks-per-pixel X/Y *)
pad * : ARRAY 4 OF E.UBYTE; (* used internally *)
redBits * : E.UBYTE; (* number of Red bits this display supports (V39) *)
greenBits * : E.UBYTE; (* number of Green bits this display supports (V39) *)
blueBits * : E.UBYTE; (* number of Blue bits this display supports (V39) *)
(* pad2 * : ARRAY 5 OF E.UBYTE; (* find some use for this. *)
Allow for different alignment rules (?) *)
pad2 * : ARRAY 4 OF E.UBYTE; (* find some use for this. *)
reserved * : ARRAY 2 OF E.ULONG; (* terminator *)
END; (* DisplayInfo *)
CONST
(* availability *)
diAvailNoChips * = {0};
diAvailNoMonitor * = {1};
diAvailNotWithGenlock * = {2};
(* mode properties *)
dipIsLace * = 0;
dipIsDualPF * = 1;
dipIsPF2Pri * = 2;
dipIsHAM * = 3;
dipIsECS * = 4; (* note: ECS modes (SHIRES, VGA, and **
** PRODUCTIVITY) do not support **
** attached sprites. **
*)
dipIsAA * = 16; (* AA modes - may only be available
** if machine has correct memory
** type to support required
** bandwidth - check availability.
** (V39)
*)
dipIsPAL * = 5;
dipIsSprites * = 6;
dipIsGenlock * = 7;
dipIsWB * = 8;
dipIsDraggable * = 9;
dipIsPanelled * = 10;
dipIsBeamSync * = 11;
dipIsExtraHalfBrite * = 12;
(* The following dipIs... flags are new for V39 *)
dipIsSpritesAtt * = 13; (* supports attached sprites *)
dipIsSpritesChngRes * = 14; (* supports variable sprite resolution *)
dipIsSpritesBorder * = 15; (* sprite can be displayed in the border *)
dipIsScanDbl * = 17; (* scan doubled *)
dipIsSpritesChngBase * = 18;
dipIsSpritesChngPri * = 19;
dipIsDBuffer * = 20; (* can support double buffering *)
dipIsProgBeam * = 21; (* is a programmed beam-sync mode *)
dipIsForeign * = 31; (* this mode is not native to the Amiga *)
TYPE
DimensionInfo * = RECORD (QueryHeader)
maxDepth * : E.UWORD; (* log2( max number of colors ) *)
minRasterWidth * : E.UWORD; (* minimum width in pixels *)
minRasterHeight * : E.UWORD; (* minimum height in pixels *)
maxRasterWidth * : E.UWORD; (* maximum width in pixels *)
maxRasterHeight * : E.UWORD; (* maximum height in pixels *)
nominal * : Rectangle; (* "standard" dimensions *)
maxOScan * : Rectangle; (* fixed, hardware dependant *)
videoOScan * : Rectangle; (* fixed, hardware dependant *)
txtOScan * : Rectangle; (* editable via preferences *)
stdOScan * : Rectangle; (* editable via preferences *)
pad * : ARRAY 14 OF E.UBYTE;
reserved * : ARRAY 2 OF E.ULONG; (* terminator *)
END; (* DimensionInfo *)
MonitorInfo * = RECORD (QueryHeader)
mspc * : MonitorSpecPtr; (* pointer to monitor specification *)
viewPosition * : Point; (* editable via preferences *)
viewResolution * : Point; (* standard monitor ticks-per-pixel *)
viewPositionRange * : Rectangle; (* fixed, hardware dependant *)
totalRows * : E.UWORD; (* display height in scanlines *)
totalColorClocks * : E.UWORD; (* scanline width in 280 ns units *)
minRow * : E.UWORD; (* absolute minimum active scanline *)
compatibility * : INTEGER; (* how this coexists with others *)
pad * : ARRAY 36 OF E.UBYTE;
defaultViewPosition * : Point; (* original, never changes *)
preferredModeID * : E.ULONG; (* for Preferences *)
reserved * : ARRAY 2 OF E.ULONG; (* terminator *)
END; (* MonitorInfo *)
CONST
(* monitor compatibility *)
mCompatMixed * = 0; (* can share display with other mcompatMIXED *)
mCompatSelf * = 1; (* can share only within same monitor *)
mCompatNobody * = -1; (* only one viewport at a time *)
displayNameLen * = 32;
TYPE
NameInfo * = RECORD (QueryHeader)
name * : ARRAY displayNameLen OF CHAR;
reserved * : ARRAY 2 OF E.ULONG; (* terminator *)
END; (* NameInfo *)
(*
** $VER: modeid.h 39.9 (27.5.93)
**
** graphics display mode IDs.
*)
CONST
(* DisplayInfoRecord identifiers *)
invalidID * = -1; (* ~0 *)
(* With all the new modes that are available under V38 and V39, it is highly
* recommended that you use either the asl.library screenmode requester,
* and/or the V39 graphics.library function BestModeIDA().
*
* DO NOT interpret the any of the bits in the ModeID for its meaning. For
* example, do not interpret bit 3 (0x4) as meaning the ModeID is interlaced.
* Instead, use GetDisplayInfoData() with dtagDisp, and examine the dip...
* flags to determine a ModeID's characteristics. The only exception to
* this rule is that bit 7 (0x80) will always mean the ModeID is
* ExtraHalfBright, and bit 11 (0x800) will always mean the ModeID is HAM.
*)
(* normal identifiers *)
monitorIDMask * = 0FFFF1000H;
defaultMonitorID * = 00000000H;
ntscMonitorID * = 00011000H;
palMonitorID * = 00021000H;
(* the following 22 composite keys are for Modes on the default Monitor.
* NTSC & PAL "flavors" of these particular keys may be made by or'ing
* the NTSC or PAL monitorId with the desired modeKey...
*
* For example, to specifically open a PAL HAM interlaced ViewPort
* (or intuition screen), you would use the modeid of
* (palMonitorId | hamlaceKey)
*)
loresKey * = 00000000H;
hiresKey * = 00008000H;
superKey * = 00008020H;
hamKey * = 00000800H;
loresLaceKey * = 00000004H;
hiresLaceKey * = 00008004H;
superLaceKey * = 00008024H;
hamLaceKey * = 00000804H;
loresDPFKey * = 00000400H;
hiresDPFKey * = 00008400H;
superDPFKey * = 00008420H;
loresLaceDPFKey * = 00000404H;
hiresLaceDPFKey * = 00008404H;
superLaceDPFKey * = 00008424H;
loresDPF2Key * = 00000440H;
hiresDPF2Key * = 00008440H;
superDPF2Key * = 00008460H;
loresLaceDPF2Key * = 00000444H;
hiresLaceDPF2Key * = 00008444H;
superLaceDPF2Key * = 00008464H;
extraHalfBriteKey * = 00000080H;
extraHalfBriteLaceKey * = 00000084H;
(* New for AA ChipSet (V39) *)
hiresHAMKey * = 00008800H;
superHAMKey * = 00008820H;
hiresEHBKey * = 00008080H;
superEHBKey * = 000080A0H;
hiresHAMLaceKey * = 00008804H;
superHAMLaceKey * = 00008824H;
hiresEHBLaceKey * = 00008084H;
superEHBLaceKey * = 000080A4H;
(* Added for V40 - may be useful modes for some games or animations. *)
loresSDblKey * = 00000008H;
loresHAMSDblKey * = 00000808H;
loresEHBSDblKey * = 00000088H;
hiresHAMSDblKey * = 00008808H;
(* vga identifiers *)
vgaMonitorID * = 00031000H;
vgaExtraLoresKey * = 00031004H;
vgaLoresKey * = 00039004H;
vgaProductKey * = 00039024H;
vgaHAMKey * = 00031804H;
vgaExtraLoresLaceKey * = 00031005H;
vgaLoresLaceKey * = 00039005H;
vgaProductLaceKey * = 00039025H;
vgaHAMLaceKey * = 00031805H;
vgaExtraLoresDPFKey * = 00031404H;
vgaLoresDPFKey * = 00039404H;
vgaProductDPFKey * = 00039424H;
vgaExtraLoresLaceDPFKey * = 00031405H;
vgaLoresLaceDPFKey * = 00039405H;
vgaProductLaceDPFKey * = 00039425H;
vgaExtraLoresDPF2Key * = 00031444H;
vgaLoresDPF2Key * = 00039444H;
vgaProductDPF2Key * = 00039464H;
vgaExtraLoresLaceDPF2Key * = 00031445H;
vgaLoresLaceDPF2Key * = 00039445H;
vgaProductLaceDPF2Key * = 00039465H;
vgaExtraHalfBriteKey * = 00031084H;
vgaExtraHalfBriteLaceKey * = 00031085H;
(* New for AA ChipSet (V39) *)
vgaProductHAMKey * = 00039824H;
vgaLoresHAMKey * = 00039804H;
vgaExtraLoresHAMKey * = vgaHAMKey;
vgaProductHAMLaceKey * = 00039825H;
vgaLoresHAMLaceKey * = 00039805H;
vgaExtraLoresHAMLaceKey * = vgaHAMLaceKey;
vgaExtraLoresEHBKey * = vgaExtraHalfBriteKey;
vgaExtraLoresEHBLaceKey * = vgaExtraHalfBriteLaceKey;
vgaLoresEHBKey * = 00039084H;
vgaLoresEHBLaceKey * = 00039085H;
vgaEHBKey * = 000390A4H;
vgaEHBLaceKey * = 000390A5H;
(* These ModeIDs are the scandoubled equivalents of the above, with the
* exception of the DualPlayfield modes, as AA does not allow for scandoubling
* dualplayfield.
*)
vgaExtraLoresDblKey * = 00031000H;
vgaLoresDblKey * = 00039000H;
vgaProductDblKey * = 00039020H;
vgaExtraLoresHAMDblKey * = 00031800H;
vgaLoresHAMDblKey * = 00039800H;
vgaProductHAMDblKey * = 00039820H;
vgaExtraLoresEHBDblKey * = 00031080H;
vgaLoresEHBDblKey * = 00039080H;
vgaProductEHBDblKey * = 000390A0H;
(* a2024 identifiers *)
a2024MonitorID * = 00041000H;
a2024tenHertzKey * = 00041000H;
a2024fifteenHertzKey * = 00049000H;
(* prototype identifiers *)
protoMonitorID * = 00051000H;
(* These monitors and modes were added for the V38 release. *)
euro72MonitorId * = 000061000H;
euro72ExtraLoresKey * = 000061004H;
euro72LoresKey * = 000069004H;
euro72ProductKey * = 000069024H;
euro72HAMKey * = 000061804H;
euro72ExtraLoresLaceKey * = 000061005H;
euro72LoresLaceKey * = 000069005H;
euro72ProductLaceKey * = 000069025H;
euro72HAMLaceKey * = 000061805H;
euro72ExtraLoresDPFKey * = 000061404H;
euro72LoresDPFKey * = 000069404H;
euro72ProductDPFKey * = 000069424H;
euro72ExtraLoresLaceDPFKey * = 000061405H;
euro72LoresLaceDPFKey * = 000069405H;
euro72ProductLaceDPFKey * = 000069425H;
euro72ExtraLoresDPF2Key * = 000061444H;
euro72LoresDPF2Key * = 000069444H;
euro72ProductDPF2Key * = 000069464H;
euro72ExtraLoresLaceDPF2Key * = 000061445H;
euro72LoresLaceDPF2Key * = 000069445H;
euro72ProductLaceDPF2Key * = 000069465H;
euro72ExtraHalfBriteKey * = 000061084H;
euro72ExtraHalfBriteLaceKey * = 000061085H;
(* New AA modes (V39) *)
euro72ProductHAMKey * = 000069824H;
euro72ProductHAMLaceKey * = 000069825H;
euro72LoresHAMKey * = 000069804H;
euro72LoresHAMLaceKey * = 000069805H;
euro72ExtraLoresHAMKey * = euro72HAMKey;
euro72ExtraLoresHAMLaceKey * = euro72HAMLaceKey;
euro72ExtraLoresEHBKey * = euro72ExtraHalfBriteKey;
euro72ExtraLoresEHBLaceKey * = euro72ExtraHalfBriteLaceKey;
euro72LoresEHBKey * = 000069084H;
euro72LoresEHBLaceKey * = 000069085H;
euro72EHBKey * = 0000690A4H;
euro72EHBLaceKey * = 0000690A5H;
(* These ModeIDs are the scandoubled equivalents of the above, with the
* exception of the DualPlayfield modes, as AA does not allow for scandoubling
* dualplayfield.
*)
euro72ExtraLoresDblKey * = 000061000H;
euro72LoresDblKey * = 000069000H;
euro72ProductDblKey * = 000069020H;
euro72ExtraLoresHAMDblKey * = 000061800H;
euro72LoresHAMDblKey * = 000069800H;
euro72ProductHAMDblKey * = 000069820H;
euro72ExtraLoresEHBDblKey * = 000061080H;
euro72LoresEHBDblKey * = 000069080H;
euro72ProductEHBDblKey * = 0000690A0H;
euro36MonitorId * = 000071000H;
(* Euro36 modeids can be ORed with the default modeids a la NTSC and PAL.
* For example, Euro36 SuperHires is
* (EURO36_MONITOR_ID | SUPER_KEY)
*)
super72MonitorId * = 000081000H;
(* Super72 modeids can be ORed with the default modeids a la NTSC and PAL.
* For example, Super72 SuperHiresLace (800x600) is
* (SUPER72_MONITOR_ID | SUPER_LACE_KEY).
* The following scandoubled Modes are the exception:
*)
super72LoresDblKey * = 000081008H;
super72HiresDblKey * = 000089008H;
super72SuperDblKey * = 000089028H;
super72LoresHAMDblKey * = 000081808H;
super72HiresHAMDblKey * = 000089808H;
super72SuperHAMDblKey * = 000089828H;
super72LoresEHBDblKey * = 000081088H;
super72HiresEHBDblKey * = 000089088H;
super72SuperEHBDblKey * = 0000890A8H;
(* These monitors and modes were added for the V39 release. *)
dblNTSCMonitorId * = 000091000H;
dblNTSCLoresKey * = 000091000H;
dblNTSCLoresffKey * = 000091004H;
dblNTSCLoresHAMKey * = 000091800H;
dblNTSCLoresHAMffKey * = 000091804H;
dblNTSCLoresEHBKey * = 000091080H;
dblNTSCLoresEHBffKey * = 000091084H;
dblNTSCLoresLaceKey * = 000091005H;
dblNTSCLoresHAMLaceKey * = 000091805H;
dblNTSCLoresEHBLaceKey * = 000091085H;
dblNTSCLoresDPFKey * = 000091400H;
dblNTSCLoresDPFffKey * = 000091404H;
dblNTSCLoresDPFLaceKey * = 000091405H;
dblNTSCLoresDPF2Key * = 000091440H;
dblNTSCLoresDPF2ffKey * = 000091444H;
dblNTSCLoresDPF2LaceKey * = 000091445H;
dblNTSCHiresKey * = 000099000H;
dblNTSCHiresffKey * = 000099004H;
dblNTSCHiresHAMKey * = 000099800H;
dblNTSCHiresHAMffKey * = 000099804H;
dblNTSCHiresLaceKey * = 000099005H;
dblNTSCHiresHAMLaceKey * = 000099805H;
dblNTSCHiresEHBKey * = 000099080H;
dblNTSCHiresEHBffKey * = 000099084H;
dblNTSCHiresEHBLaceKey * = 000099085H;
dblNTSCHiresDPFKey * = 000099400H;
dblNTSCHiresDPFffKey * = 000099404H;
dblNTSCHiresDPFLaceKey * = 000099405H;
dblNTSCHiresDPF2Key * = 000099440H;
dblNTSCHiresDPF2ffKey * = 000099444H;
dblNTSCHiresDPF2LaceKey * = 000099445H;
dblNTSCExtraLoresKey * = 000091200H;
dblNTSCExtraLoresHAMKey * = 000091A00H;
dblNTSCExtraLoresEHBKey * = 000091280H;
dblNTSCExtraLoresDPFKey * = 000091600H;
dblNTSCExtraLoresDPF2Key * = 000091640H;
dblNTSCExtraLoresffKey * = 000091204H;
dblNTSCExtraLoresHAMffKey * = 000091A04H;
dblNTSCExtraLoresEHBffKey * = 000091284H;
dblNTSCExtraLoresDPFffKey * = 000091604H;
dblNTSCExtraLoresDPF2ffKey * = 000091644H;
dblNTSCExtraLoresLaceKey * = 000091205H;
dblNTSCExtraLoresHAMLaceKey * = 000091A05H;
dblNTSCExtraLoresEHBLaceKey * = 000091285H;
dblNTSCExtraLoresDPFLaceKey * = 000091605H;
dblNTSCExtraLoresDPF2LaceKey * = 000091645H;
dblPALMonitorId * = 0000A1000H;
dblPALLoresKey * = 0000A1000H;
dblPALLoresffKey * = 0000A1004H;
dblPALLoresHAMKey * = 0000A1800H;
dblPALLoresHAMffKey * = 0000A1804H;
dblPALLoresEHBKey * = 0000A1080H;
dblPALLoresEHBffKey * = 0000A1084H;
dblPALLoresLaceKey * = 0000A1005H;
dblPALLoresHAMLaceKey * = 0000A1805H;
dblPALLoresEHBLaceKey * = 0000A1085H;
dblPALLoresDPFKey * = 0000A1400H;
dblPALLoresDPFffKey * = 0000A1404H;
dblPALLoresDPFLaceKey * = 0000A1405H;
dblPALLoresDPF2Key * = 0000A1440H;
dblPALLoresDPF2ffKey * = 0000A1444H;
dblPALLoresDPF2LaceKey * = 0000A1445H;
dblPALHiresKey * = 0000A9000H;
dblPALHiresffKey * = 0000A9004H;
dblPALHiresHAMKey * = 0000A9800H;
dblPALHiresHAMffKey * = 0000A9804H;
dblPALHiresLaceKey * = 0000A9005H;
dblPALHiresHAMLaceKey * = 0000A9805H;
dblPALHiresEHBKey * = 0000A9080H;
dblPALHiresEHBffKey * = 0000A9084H;
dblPALHiresEHBLaceKey * = 0000A9085H;
dblPALHiresDPFKey * = 0000A9400H;
dblPALHiresDPFffKey * = 0000A9404H;
dblPALHiresDPFLaceKey * = 0000A9405H;
dblPALHiresDPF2Key * = 0000A9440H;
dblPALHiresDPF2ffKey * = 0000A9444H;
dblPALHiresDPF2LaceKey * = 0000A9445H;
dblPALExtraLoresKey * = 0000A1200H;
dblPALExtraLoresHAMKey * = 0000A1A00H;
dblPALExtraLoresEHBKey * = 0000A1280H;
dblPALExtraLoresDPFKey * = 0000A1600H;
dblPALExtraLoresDPF2Key * = 0000A1640H;
dblPALExtraLoresffKey * = 0000A1204H;
dblPALExtraLoresHAMffKey * = 0000A1A04H;
dblPALExtraLoresEHBffKey * = 0000A1284H;
dblPALExtraLoresDPFffKey * = 0000A1604H;
dblPALExtraLoresDPF2ffKey * = 0000A1644H;
dblPALExtraLoresLaceKey * = 0000A1205H;
dblPALExtraLoresHAMLaceKey * = 0000A1A05H;
dblPALExtraLoresEHBLaceKey * = 0000A1285H;
dblPALExtraLoresDPFLaceKey * = 0000A1605H;
dblPALExtraLoresDPF2LaceKey * = 0000A1645H;
(* Use these tags for passing to BestModeID() (V39) *)
specialFlags * = {dipIsDualPF, dipIsPF2Pri, dipIsHAM, dipIsExtraHalfBrite};
bidTagDipMustHave * = 080000001H; (* mask of the DIPF_ flags the ModeID must have *)
(* Default - NULL *)
bidTagDipMustNotHave * = 080000002H; (* mask of the DIPF_ flags the ModeID must not have *)
(* Default - SPECIAL_FLAGS *)
bidTagViewPort * = 080000003H; (* ViewPort for which a ModeID is sought. *)
(* Default - NULL *)
bidTagNominalWidth * = 080000004H; (* together make the aspect ratio and *)
bidTagNominalHeight * = 080000005H; (* / override the vp->Width/Height. *)
(* Default - SourceID NominalDimensionInfo,
* or vp->DWidth/Height, or (640 * 200),
* in that preferred order.
*)
bidTagDesiredWidth * = 080000006H; (* Nominal Width and Height of the *)
bidTagDesiredHeight * = 080000007H; (* / returned ModeID. *)
(* Default - same as Nominal *)
bidTagDepth * = 080000008H; (* ModeID must support this depth. *)
(* Default - vp->RasInfo->BitMap->Depth or 1 *)
bidTagMonitorID * = 080000009H; (* ModeID must use this monitor. *)
(* Default - use best monitor available *)
bidTagSourceID * = 08000000AH; (* instead of a ViewPort. *)
(* Default - VPModeID(vp) if BID_TAG_ViewPort is
* specified, else leave the DIPFMustHave and
* DIPFMustNotHave values untouched.
*)
bidTagRedBits * = 08000000BH; (* *)
bidTagBlueBits * = 08000000CH; (* } Match up from the database *)
bidTagGreenBits * = 08000000DH; (* / *)
(* Default - 4 *)
bidTagGfxPrivate * = 08000000EH; (* Private *)
(*
** $VER: gels.h 39.0 (21.8.91)
**
** definitions for AMIGA GELS (Graphics Elements)
*)
CONST
(* VSprite flags *)
(* user-set VSprite flags: *)
sUserFlags * = {0 .. 7}; (* mask of all user-settable VSprite-flags *)
vSprite * = 0; (* set if VSprite, clear if Bob *)
saveBack * = 1; (* set if background is to be saved/restored *)
overlay * = 2; (* set to mask image of Bob onto background *)
mustDraw * = 3; (* set if VSprite absolutely must be drawn *)
(* system-set VSprite flags: *)
backSaved * = 8; (* this Bob's background has been saved *)
bobUpdate * = 9; (* temporary flag, useless to outside world *)
gelGone * = 10; (* set if gel is completely clipped (offscreen) *)
vsOverflow * = 11; (* VSprite overflow (if MUSTDRAW set we draw!) *)
(* Bob flags *)
(* these are the user flag bits *)
bUserFlags * = {0 .. 7}; (* mask of all user-settable Bob-flags *)
saveBob * = 0; (* set to not erase Bob *)
bobIsComp * = 1; (* set to identify Bob as AnimComp *)
(* these are the system flag bits *)
bWaiting * = 8; (* set while Bob is waiting on 'after' *)
bDrawn * = 9; (* set when Bob is drawn this DrawG pass *)
bobsAway * = 10; (* set to initiate removal of Bob *)
bobNix * = 11; (* set when Bob is completely removed *)
savePreserve * = 12; (* for back-restore during double-buffer *)
outStep * = 13; (* for double-clearing if double-buffer *)
(* defines for the animation procedures *)
anFracSize * = 6;
animHalf * = 0020H;
ringTrigger * = 0001H;
TYPE
(* UserStuff definitions
* the user can define these to be a single variable or a sub-structure
* if undefined by the user, the system turns these into innocuous variables
* see the manual for a thorough definition of the UserStuff definitions
*
*)
(* VSprite user stuff *)
VUserStuff * = INTEGER;
(* Bob user stuff *)
BUserStuff * = INTEGER;
(* AnimOb user stuff *)
AUserStuff * = INTEGER;
(********************** * GEL STRUCTURES** ******************************** *)
VSprite * = RECORD
(* --------------------- SYSTEM VARIABLES ------------------------------- *)
(* GEL linked list forward/backward pointers sorted by y,x value *)
nextVSprite * : VSpritePtr;
prevVSprite * : VSpritePtr;
(* GEL draw list constructed in the order the Bobs are actually drawn, then
* list is copied to clear list
* must be here in VSprite for system boundary detection
*)
drawPath * : VSpritePtr; (* pointer of overlay drawing *)
clearPath * : VSpritePtr; (* pointer for overlay clearing *)
(* the VSprite positions are defined in (y,x) order to make sorting
* sorting easier, since (y,x) as a long integer
*)
oldY *, oldX * : INTEGER; (* previous position *)
(* --------------------- COMMON VARIABLES --------------------------------- *)
flags * : E.WSET; (* VSprite flags *)
(* --------------------- USER VARIABLES ----------------------------------- *)
(* the VSprite positions are defined in (y,x) order to make sorting
* sorting easier, since (y,x) as a long integer
*)
y *, x * : INTEGER; (* screen position *)
height * : INTEGER;
width * : INTEGER; (* number of words per row of image data *)
depth * : INTEGER; (* number of planes of data *)
meMask * : E.WSET; (* which types can collide with this VSprite *)
hitMask * : E.WSET; (* which types this VSprite can collide with *)
imageData * : E.APTR; (* pointer to VSprite image *)
(* borderLine is the one-dimensional logical OR of all
* the VSprite bits, used for fast collision detection of edge
*)
borderLine * : E.APTR; (* logical OR of all VSprite bits *)
collMask * : E.APTR; (* similar to above except this is a matrix *)
(* pointer to this VSprite's color definitions (not used by Bobs) *)
sprColors * : E.APTR;
vsBob * : BobPtr; (* points home if this VSprite is part of
a Bob *)
(* planePick flag: set bit selects a plane from image, clear bit selects
* use of shadow mask for that plane
* OnOff flag: if using shadow mask to fill plane, this bit (corresponding
* to bit in planePick) describes whether to fill with 0's or 1's
* There are two uses for these flags:
* - if this is the VSprite of a Bob, these flags describe how the Bob
* is to be drawn into memory
* - if this is a simple VSprite and the user intends on setting the
* MUSTDRAW flag of the VSprite, these flags must be set too to describe
* which color registers the user wants for the image
*)
planePick * : E.BSET;
planeOnOff * : E.BSET;
vUserExt * : VUserStuff; (* user definable: see note above *)
END; (* VSprite *)
Bob * = RECORD
(* blitter-objects *)
(* --------------------- SYSTEM VARIABLES --------------------------------- *)
(* --------------------- COMMON VARIABLES --------------------------------- *)
flags * : E.WSET; (* general purpose flags (see definitions below) *)
(* --------------------- USER VARIABLES ----------------------------------- *)
saveBuffer * : E.APTR; (* pointer to the buffer for background save *)
(* used by Bobs for "cookie-cutting" and multi-plane masking *)
imageShadow * : E.APTR;
(* pointer to BOBs for sequenced drawing of Bobs
* for correct overlaying of multiple component animations
*)
before * : BobPtr; (* draw this Bob before Bob pointed to by before *)
after * : BobPtr; (* draw this Bob after Bob pointed to by after *)
bobVSprite * : VSpritePtr; (* this Bob's VSprite definition *)
bobComp * : AnimCompPtr; (* pointer to this Bob's AnimComp def *)
dBuffer * : DBufPacketPtr; (* pointer to this Bob's dBuf packet *)
bUserExt * : BUserStuff; (* Bob user extension *)
END; (* Bob *)
AnimComp * = RECORD
(* --------------------- SYSTEM VARIABLES --------------------------------- *)
(* --------------------- COMMON VARIABLES --------------------------------- *)
flags * : E.WSET; (* AnimComp flags for system & user *)
(* timer defines how long to keep this component active:
* if set non-zero, timer decrements to zero then switches to nextSeq
* if set to zero, AnimComp never switches
*)
timer * : INTEGER;
(* --------------------- USER VARIABLES ----------------------------------- *)
(* initial value for timer when the AnimComp is activated by the system *)
timeSet * : INTEGER;
(* pointer to next and previous components of animation object *)
nextComp * : AnimCompPtr;
prevComp * : AnimCompPtr;
(* pointer to component component definition of next image in sequence *)
nextSeq * : AnimCompPtr;
prevSeq * : AnimCompPtr;
animCRoutine * : E.PROC; (* address of special animation procedure *)
yTrans * : INTEGER; (* initial y translation (if this is a component) *)
xTrans * : INTEGER; (* initial x translation (if this is a component) *)
headOb * : AnimObPtr;
animBob * : BobPtr;
END; (* AnimComp *)
AnimOb * = RECORD
(* --------------------- SYSTEM VARIABLES --------------------------------- *)
nextOb *, prevOb * : AnimObPtr;
(* number of calls to Animate this AnimOb has endured *)
clock * : LONGINT;
anOldY *, anOldX * : INTEGER; (* old y,x coordinates *)
(* --------------------- COMMON VARIABLES --------------------------------- *)
anY *, anX * : INTEGER; (* y,x coordinates of the AnimOb *)
(* --------------------- USER VARIABLES ----------------------------------- *)
yVel *, xVel * : INTEGER; (* velocities of this object *)
yAccel *, xAccell * : INTEGER; (* accelerations of this object *)
ringYTrans *, ringXTrans * : INTEGER; (* ring translation values *)
animoRoutine * : E.PROC; (* address of special animation
procedure *)
headComp * : AnimCompPtr; (* pointer to first component *)
aUserExt * : AUserStuff; (* AnimOb user extension *)
END; (* AnimOb *)
DBufPacket * = RECORD
bufY *, bufX * : INTEGER; (* save the other buffers screen coordinates *)
bufPath * : VSpritePtr; (* carry the draw path over the gap *)
(* these pointers must be filled in by the user *)
(* pointer to other buffer's background save buffer *)
bufBuffer * : E.APTR;
END; (* DBufPacket *)
CONST
(*** ********************************************************************** *)
(* these are GEL functions that are currently simple enough to exist as a
* definition. It should not be assumed that this will always be the case
*)
(*
#define InitAnimate(animKey) {*(animKey) = NULL;}
#define RemBob(b) {(b)->Flags |= BOBSAWAY;}
*)
(*** ********************************************************************** *)
b2Norm * = 0;
b2Swap * = 1;
b2Bobber * = 2;
(*** ********************************************************************** *)
TYPE
CollTable * = RECORD
collPtrs * : ARRAY 16 OF E.APTR;
END; (* CollTable *)
(*
** $VER: collide.h 37.0 (7.1.91)
**
** definitions for collision detection and control
*)
CONST
(* These bit descriptors are used by the GEL collide routines.
* These bits are set in the hitMask and meMask variables of
* a GEL to describe whether or not these types of collisions
* can affect the GEL. bndryHIT is described further below;
* this bit is permanently assigned as the boundary-hit flag.
* The other bit gelHIT is meant only as a default to cover
* any GEL hitting any other; the user may redefine this bit.
*)
borderHit * = 0;
(* These bit descriptors are used by the GEL boundry hit routines.
* When the user's boundry-hit routine is called (via the argument
* set by a call to SetCollision) the first argument passed to
* the user's routine is the address of the GEL involved in the
* boundry-hit, and the second argument has the appropriate bit(s)
* set to describe which boundry was surpassed
*)
topHit * = 1;
bottomHit * = 2;
leftHit * = 4;
rightHit * = 8;
(*
** $VER: rastport.h 39.0 (21.8.91)
**
** Graphics library rastport definitions
*)
TYPE
AreaInfo * = RECORD
vctrTbl * : E.APTR; (* ptr to start of vector table *)
vctrPtr * : E.APTR; (* ptr to current vertex *)
flagTbl * : E.APTR; (* ptr to start of vector flag table *)
flagPtr * : E.APTR; (* ptrs to areafill flags *)
count * : INTEGER; (* number of vertices in list *)
maxCount * : INTEGER; (* AreaMove/Draw will not allow Count>MaxCount *)
firstX *, firstY * : INTEGER; (* first point for this polygon *)
END; (* AreaInfo *)
TmpRas * = RECORD
rasPtr * : E.APTR;
size * : LONGINT;
END; (* TmpRas *)
GelsInfo * = RECORD
sprRsrvd * : SHORTINT; (* flag of which sprites to reserve from
vsprite system *)
flags * : E.BSET; (* system use *)
gelHead *, gelTail * : VSpritePtr; (* dummy vSprites for list management *)
(* pointer to array of 8 INTEGERS for sprite available lines *)
nextLine * : CPOINTER TO ARRAY 8 OF INTEGER;
(* pointer to array of 8 pointers for color-last-assigned to vSprites *)
lastColor * : CPOINTER TO ARRAY 8 OF CPOINTER TO INTEGER;
collHandler * : CollTablePtr; (* addresses of collision routines *)
leftmost *, rightmost *, topmost *, bottommost * : INTEGER;
firstBlissObj *, lastBlissObj * : E.APTR; (* system use only *)
END; (* GelsInfo *)
RastPort * = RECORD
layer * : LayerPtr;
bitMap * : BitMapPtr;
areaPtrn * : E.APTR; (* ptr to areafill pattern *)
tmpRas * : TmpRasPtr;
areaInfo * : AreaInfoPtr;
gelsInfo * : GelsInfoPtr;
mask * : E.BSET; (* write mask for this raster *)
fgPen * : SHORTINT; (* foreground pen for this raster *)
bgPen * : SHORTINT; (* background pen *)
aOlPen * : SHORTINT; (* areafill outline pen *)
drawMode * : E.BSET; (* drawing mode for fill, lines, and text *)
areaPtSz * : SHORTINT; (* 2^n words for areafill pattern *)
linpatcnt * : SHORTINT; (* current line drawing pattern preshift *)
dummy * : SHORTINT;
flags * : E.WSET; (* miscellaneous control bits *)
linePtrn * : E.UWORD; (* 16 bits for textured lines *)
x *, y * : INTEGER; (* current pen position *)
minterms * : ARRAY 8 OF E.UBYTE;
penWidth * : INTEGER;
penHeight * : INTEGER;
font * : TextFontPtr; (* current font address *)
algoStyle * : E.BSET; (* the algorithmically generated style *)
txFlags * : E.BSET; (* text specific flags *)
txHeight * : E.UWORD; (* text height *)
txWidth * : E.UWORD; (* text nominal width *)
txBaseline * : E.UWORD; (* text baseline *)
txSpacing * : INTEGER; (* text spacing (per character) *)
user * : E.APTR;
longreserved * : ARRAY 2 OF E.ULONG;
wordreserved * : ARRAY 7 OF E.UWORD; (* used to be a node *)
reserved * : ARRAY 8 OF E.UBYTE; (* for future use *)
END; (* RastPort *)
CONST
(* drawing modes *)
jam1 * = {}; (* jam 1 color into raster *)
jam2 * = {0}; (* jam 2 colors into raster *)
complement * = 1; (* XOR bits into raster *)
inversVid * = 2; (* inverse video for drawing modes *)
(* these are the flag bits for RastPort flags *)
frstDot * = 0; (* draw the first dot of this line ? *)
oneDot * = 1; (* use one dot mode for drawing lines *)
dBuffer * = 2; (* flag set when RastPorts
are double-buffered *)
(* only used for bobs *)
areaOutline * = 3; (* used by areafiller *)
noCrossFill * = 5; (* areafills have no crossovers *)
(* there is only one style of clipping: raster clipping *)
(* this preserves the continuity of jaggies regardless of clip window *)
(* When drawing into a RastPort, if the ptr to ClipRect is nil then there *)
(* is no clipping done, this is dangerous but useful for speed *)
(*
** $VER: copper.h 39.10 (31.5.93)
**
** graphics copper list intstruction definintions
*)
CONST
copperMove * = 0; (* pseude opcode for move #XXXX,dir *)
copperWait * = 1; (* pseudo opcode for wait y,x *)
cprNxtBuf * = 2; (* continue processing with next buffer *)
cprNtLof * = 15; (* copper instruction only for short frames *)
cprNtSht * = 14; (* copper instruction only for long frames *)
cprNtSys * = 13; (* copper user instruction only *)
TYPE
CopIns * = RECORD
opCode * : INTEGER; (* 0 = move, 1 = wait *)
destAddr *: INTEGER; (* vertical beam wait OR
* destination address of copper move *)
destData *: INTEGER; (* beam wait position OR
* destination immediate data to send *)
END; (* CopIns *)
CopInsCL * = RECORD
opCode * : INTEGER;
nxtlist * : CopListBasePtr;
END; (* CopInsCL *)
TYPE
Cprlist * = RECORD
next * : CprlistPtr;
start * : E.APTR; (* start of copper list *)
maxCount * : INTEGER; (* number of long instructions *)
END; (* Cprlist *)
CopListBase * = RECORD
next * : CopListBasePtr; (* next block for this copper list *)
copList * : CopListBasePtr; (* system use *)
viewPort * : ViewPortPtr; (* system use *)
copIns * : CopInsPtr; (* start of this block *)
copPtr * : CopInsPtr; (* intermediate ptr *)
copLStart * : E.APTR; (* mrgcop fills this in for Long Frame *)
copSStart * : E.APTR; (* mrgcop fills this in for Short Frame *)
count * : INTEGER; (* intermediate counter *)
maxCount * : INTEGER; (* max # of copins for this block *)
dyOffset * : INTEGER; (* offset this copper list vertical waits *)
END;
CopList * = RECORD (CopListBase)
slRepeat * : INTEGER;
flags * : E.WSET;
END; (* CopList *)
CopList13 = RECORD (CopListBase)
cop2Start * : E.APTR;
cop3Start * : E.APTR;
cop4Start * : E.APTR;
cop5Start * : E.APTR;
slRepeat * : INTEGER;
flags * : E.WSET;
END; (* CopList13 *)
UCopList * = RECORD
next * : UCopListPtr;
firstCopList * : CopListBasePtr; (* head node of this copper list *)
copList * : CopListBasePtr; (* node in use *)
END; (* UCopList *)
(* private graphics data structure *)
CopinitPtr = CPOINTER TO Copinit;
Copinit = RECORD
vsyncHblank : ARRAY 2 OF E.UWORD;
diagstrt : ARRAY 12 OF E.UWORD; (* copper list for first bitplane *)
fm0 : ARRAY 2 OF E.UWORD;
diwstart : ARRAY 10 OF E.UWORD;
bplcon2 : ARRAY 2 OF E.UWORD;
sprfix : ARRAY 2*8 OF E.UWORD;
sprstrtup : ARRAY (2*8*2) OF E.UWORD;
wait14 : ARRAY 2 OF E.UWORD;
normHblank : ARRAY 2 OF E.UWORD;
jump : ARRAY 2 OF E.UWORD;
waitForever : ARRAY 6 OF E.UWORD;
sprstop : ARRAY 8 OF E.UWORD;
END; (* Copinit *)
(*
** $VER: view.h 39.34 (31.5.93)
**
** graphics view/viewport definintions
*)
TYPE
ViewPort * = RECORD
next * : ViewPortPtr;
colorMap * : ColorMapPtr; (* table of colors for this viewport *)
(* if this is nil, MakeVPort assumes default values *)
dspIns * : CopListBasePtr; (* user by MakeView() *)
sprIns * : CopListBasePtr; (* used by sprite stuff *)
clrIns * : CopListBasePtr; (* used by sprite stuff *)
uCopIns * : UCopListPtr; (* User copper list *)
dWidth *, dHeight * : INTEGER;
dxOffset *, dyOffset * : INTEGER;
modes * : E.WSET;
spritePriorities * : E.UBYTE; (* used by makevp *)
extendedModes * : E.UBYTE;
rasInfo * : RasInfoPtr;
END; (* ViewPort *)
View * = RECORD
viewPort * : ViewPortPtr;
lofCprList * : CprlistPtr; (* used for interlaced and noninterlaced *)
shfCprList * : CprlistPtr; (* only used during interlace *)
dyOffset *, dxOffset * : INTEGER; (* for complete View positioning *)
(* offsets are +- adjustments to standard #s *)
modes * : E.WSET; (* such as INTERLACE, GENLOC *)
END; (* View *)
(* these structures are obtained via GfxNew *)
(* and disposed by GfxFree *)
ViewExtra * = RECORD (ExtendedNode)
view * : ViewPtr; (* backwards link *)
monitor * : MonitorSpecPtr; (* monitors for this view *)
topLine * : E.UWORD;
END; (* ViewExtra *)
(* this structure is obtained via GfxNew *)
(* and disposed by GfxFree *)
ViewPortExtra * = RECORD (ExtendedNode)
viewPort * : ViewPortPtr; (* backwards link *)
displayClip * : Rectangle; (* makevp display clipping information *)
(* These are added for V39 *)
vecTable : E.APTR; (* Private *)
driverData * : ARRAY 2 OF E.APTR;
flags * : E.WSET;
origin * : ARRAY 2 OF Point; (* First visible point relative to the DClip.
* One for each possible playfield.
*)
cop1ptr : E.ULONG; (* private *)
cop2ptr : E.ULONG; (* private *)
END; (* ViewPortExtra *)
CONST
(* All these vpx flags are private *)
vpxFreeMe = 0;
vpxLast = 1;
vpxStraddles256 = 4;
vpxStraddles512 = 5;
extendVStruct * = 12; (* unused bit in Modes field of View *)
(* VP_ fields internal only *)
vpA2024 = 6;
vpTenhz = 4;
(* defines used for Modes in IVPargs *)
genLockVideo * = 1;
lace * = 2;
doubleScan * = 3;
superHires * = 5;
pfba * = 6;
extraHalfBrite * = 7;
genlockAudio * = 8;
dualpf * = 10;
ham * = 11;
extendedMode * = 12;
vpHide * = 13;
sprites * = 14;
hires * = 15;
TYPE
(* used by callers to and InitDspC() *)
RasInfo * = RECORD
next * : RasInfoPtr; (* used for dualpf *)
bitMap * : BitMapPtr;
rxOffset *, ryOffset : INTEGER; (* scroll offsets in this BitMap *)
END; (* RasInfo *)
ColorMap * = RECORD
flags * : E.BSET;
type * : E.UBYTE;
count * : E.UWORD;
colorTable * : E.APTR;
vpe * : ViewPortExtraPtr;
lowColorBits * : E.APTR;
transparencyPlane * : E.UBYTE;
spriteResolution * : E.UBYTE;
spriteResDefault * : E.UBYTE; (* what resolution you get when you have set SPRITERESN_DEFAULT *)
auxFlags * : E.BSET;
vp * : ViewPortPtr;
normalDisplayInfo * : DisplayInfoPtr;
coerceDisplayInfo * : DisplayInfoPtr;
cmBatchItems * : U.TagListPtr;
vpModeID * : E.ULONG;
palExtra * : PaletteExtraPtr;
spriteBaseEven * : E.UWORD;
spriteBaseOdd * : E.UWORD;
bp0base * : E.UWORD;
bp1base * : E.UWORD;
END; (* ColorMap *)
CONST
(* if Type == 0 then ColorMap is V1.2/V1.3 compatible *)
(* if Type != 0 then ColorMap is V38 compatible *)
(* the system will never create other than V39 type colormaps when running V39 *)
colorMapTypeV12 * = 0;
colorMapTypeV14 * = 1;
colorMapTypeV36 * = colorMapTypeV14; (* use this definition *)
colorMapTypeV39 * = 2;
(* Flags variable *)
colorMapTransparency * = 0;
colorPlaneTransparency * = 1;
borderBlanking * = 2;
borderNoTransparency * = 3;
videoControlBatch * = 4;
userCopperClip * = 5;
borderSprites * = 6;
cmfCmTrans * = 0;
cmfCpTrans * = 1;
cmfBrdrBlnk * = 2;
cmfBrdnTran * = 3;
cmfBrdrSprt * = 6;
spriteResnEcs * = 0;
(* ^140ns, except in 35ns viewport, where it is 70ns. *)
spriteResn140ns * = 1;
spriteResn70ns * = 2;
spriteResn35ns * = 3;
spriteResnDefault * = -1;
(* AuxFlags : *)
cmaFullPalette * = 0;
cmaNoIntermedUpdate * = 1;
cmaNoColorLoad * = 2;
cmaDualPFDisable * = 3;
TYPE
(* structure may be extended so watch out! *)
PaletteExtra * = RECORD (E.SignalSemaphore) (* shared semaphore for arbitration *)
firstFree : E.UWORD; (* *private* *)
nFree * : E.UWORD; (* number of free colors *)
firstShared : E.UWORD; (* *private* *)
nShared : E.UWORD; (* *private* *)
refCnt : E.APTR; (* *private* *)
allocList : E.APTR; (* *private* *)
viewPort * : ViewPortPtr; (* back pointer to viewport *)
sharableColors * : E.UWORD; (* the number of sharable colors. *)
END;
CONST
(* flags values for ObtainPen *)
penExclusive * = 0;
penNoSetColor * = 1;
(* precision values for ObtainBestPen : *)
precisionExact * = -1;
precisionImage * = 0;
precisionIcon * = 16;
precisionGui * = 32;
(* tags for ObtainBestPen: *)
obpPrecision * = 084000000H;
obpFailIfBad * = 084000001H;
(* From V39, MakeVPort() will return an error if there is not enough memory,
* or the requested mode cannot be opened with the requested depth with the
* given bitmap (for higher bandwidth alignments).
*)
mvpOk * = 0; (* you want to see this one *)
mvpNoMem * = 1; (* insufficient memory for intermediate workspace *)
mvpNoVpe * = 2; (* ViewPort does not have a ViewPortExtra, and
* insufficient memory to allocate a temporary one.
*)
mvpNoDspins * = 3; (* insufficient memory for intermidiate copper
* instructions.
*)
mvpNoDisplay * = 4; (* BitMap data is misaligned for this viewport's
* mode and depth - see AllocBitMap().
*)
mvpOffBottom = 5; (* PRIVATE - you will never see this. *)
(* From V39, MrgCop() will return an error if there is not enough memory,
* or for some reason MrgCop() did not need to make any copper lists.
*)
mcopOk * = 0; (* you want to see this one *)
mcopNoMem * = 1; (* insufficient memory to allocate the system
* copper lists.
*)
mcopNop * = 2; (* MrgCop() did not merge any copper lists
* (eg, no ViewPorts in the list, or all marked as
* hidden).
*)
TYPE
DBufInfo * = RECORD
link1 * : E.APTR;
count1 * : E.ULONG;
safeMessage * : E.Message; (* replied to when safe to write to old bitmap *)
userData1 * : E.APTR; (* first user data *)
link2 * : E.APTR;
count2 * : E.ULONG;
dispMessage * : E.Message; (* replied to when new bitmap has been displayed at least
once *)
userData2 * : E.APTR; (* second user data *)
matchLong * : E.ULONG;
copPtr1 * : E.APTR;
copPtr2 * : E.APTR;
copPtr3 * : E.APTR;
beamPos1 * : E.UWORD;
beamPos2 * : E.UWORD;
END;
(*
** $VER: layers.h 39.4 (14.4.92)
**
** graphics library layers definitions
*)
CONST
layerSimple * = 0;
layerSmart * = 1;
layerSuper * = 2;
layerUpdating * = 4;
layerBackdrop * = 6;
layerRefresh * = 7;
layerIRefresh * = 9;
layerIRefresh2 * = 10;
layerClipRectsLost * = 8; (* during BeginUpdate *)
(* or during layerop *)
(* this happens if out of memory *)
TYPE
LayerInfo * = RECORD
topLayer * : LayerPtr;
checklp : LayerPtr; (* !! Private !! *)
obs * : ClipRectPtr;
freeClipRects : ClipRectPtr; (* !! Private !! *)
privateReserve1 : LONGINT; (* !! Private !! *)
privateReserve2 : LONGINT; (* !! Private !! *)
lock : E.SignalSemaphore; (* !! Private !! *)
gsHead : E.MinList; (* !! Private !! *)
privateReserve3 : INTEGER; (* !! Private !! *)
privateReserve4 : E.APTR; (* !! Private !! *)
flags * : E.WSET;
fattenCount : SHORTINT; (* !! Private !! *)
lockLayersCount : SHORTINT; (* !! Private !! *)
privateReserve5 : INTEGER; (* !! Private !! *)
blankHook : E.APTR; (* !! Private !! *)
layerInfoExtra : E.APTR; (* !! Private !! *)
END; (* LayerInfo *)
CONST
newLayerInfoCalled * = 1;
(*
* layersNoBackfill is the value needed to get no backfill hook
* layersBackfill is the value needed to get the default backfill hook
*)
layersNoBackfill * = SYS.VAL (U.HookPtr, 1);
layersBackfill * = NIL;
(*
** $VER: clip.h 39.0 (2.12.91)
**
** Graphics library clip definitions
*)
TYPE
Layer * = RECORD
front *, back * : LayerPtr;
clipRect * : ClipRectPtr; (* read by roms to find first cliprect *)
rp * : RastPortPtr;
bounds * : Rectangle;
reserved * : ARRAY 4 OF E.UBYTE;
priority * : E.UWORD; (* system use only *)
flags * : E.WSET; (* obscured ?, Virtual BitMap? *)
superBitMap * : BitMapPtr;
superClipRect * : ClipRectPtr; (* super bitmap cliprects if VBitMap != 0 *)
(* else damage cliprect list for refresh *)
window * : E.APTR; (* reserved for user interface use *)
scrollX *, scrollY * : INTEGER;
cr *, cr2 *, crnew * : ClipRectPtr; (* used by dedice *)
superSaveClipRects * : ClipRectPtr; (* preallocated cr's *)
cliprects * : ClipRectPtr; (* system use during refresh *)
layerInfo * : LayerInfoPtr; (* points to head of the list *)
lock * : E.SignalSemaphore;
backFill * : U.HookPtr;
reserved1 * : E.ULONG;
clipRegion * : RegionPtr;
saveClipRects * : RegionPtr; (* used to back out when in trouble *)
width *, height * : INTEGER; (* system use *)
reserved2 * : ARRAY 18 OF E.UBYTE;
(* this must stay here *)
damageList * : RegionPtr; (* list of rectangles to refresh
through *)
END; (* Layer *)
ClipRect * = RECORD
next * : ClipRectPtr; (* roms used to find next ClipRect *)
prev : ClipRectPtr; (* Temp use in layers (private) *)
lobs : LayerPtr; (* Private use for layers *)
bitMap : BitMapPtr; (* Bitmap for layers private use *)
bounds * : Rectangle; (* bounds of cliprect *)
p1 : E.APTR; (* Layers private use!!! *)
p2 : E.APTR; (* Layers private use!!! *)
reserved : LONGINT; (* system use (Layers private) *)
flags : SET; (* Layers private field for cliprects *)
(* that layers allocates... *)
(* MUST be multiple of 8 bytes to buffer *)
END; (* ClipRect *)
CONST
(* internal cliprect flags *)
crNeedsNoConcealedRasters = 1;
crNeedsNoLayerblitDamage = 2;
(* defines for code values for getcode *)
isLessX * = 1;
isLessY * = 2;
isGrtrX * = 4;
isGrtrY * = 8;
(*
** $VER: regions.h 39.0 (21.8.91)
**
** Graphics region definitions
*)
TYPE
RegionRectangle * = RECORD
next *, prev * : RegionRectanglePtr;
bounds * : Rectangle;
END; (* RegionRectangle *)
Region * = RECORD (Rectangle)
regionRectangle * : RegionRectanglePtr;
END; (* Region *)
(*
** $VER: sprite.h 39.6 (16.6.92)
**
** Graphics sprite definitions
*)
CONST
spriteAttached * = 80H;
TYPE
SimpleSprite * = RECORD
posctldata * : E.APTR;
height * : E.UWORD;
x *, y * : E.UWORD; (* current position *)
num * : E.UWORD;
END; (* SimpleSprite *)
ExtSprite * = RECORD (SimpleSprite) (* conventional simple sprite structure *)
wordWidth * : E.UWORD; (* graphics use only, subject to change *)
flags * : E.UWORD; (* graphics use only, subject to change *)
END;
CONST
(* tags for AllocSpriteData() *)
spriteaWidth * = 081000000H;
spriteaXReplication * = 081000002H;
spriteaYReplication * = 081000004H;
spriteaOutputHeight * = 081000006H;
spriteaAttached * = 081000008H;
spriteaOldDataFormat * = 08100000AH; (* MUST pass in outputheight if using this tag *)
(* tags for GetExtSprite() *)
gstagSpriteNum * = 082000020H;
gstagAttached * = 082000022H;
gstagSoftSprite * = 082000024H;
(* tags valid for either GetExtSprite or ChangeExtSprite *)
gstagScanDoubled * = 083000000H; (* request "NTSC-Like" height if possible. *)
(*
** $VER: text.h 39.0 (21.8.91)
**
** graphics library text structures
*)
CONST
(* ------ Font Styles ------------------------------------------------ *)
fsNormal * = {}; (* normal text (no style bits set) *)
fsUnderlined * = 0; (* underlined (under baseline) *)
fsBold * = 1; (* bold face text (ORed w/ shifted) *)
fsItalic * = 2; (* italic (slanted 1:2 right) *)
fsExtended * = 3; (* extended face (wider than normal) *)
fsColorfont * = 6; (* this uses ColorTextFont structure *)
fsTagged * = 7; (* the TextAttr is really an TTextAttr, *)
(* ------ Font Flags ------------------------------------------------- *)
fpRomFont * = 0; (* font is in rom *)
fpDiskFont * = 1; (* font is from diskfont.library *)
fpRevPath * = 2; (* designed path is reversed (e.g. left) *)
fpTallDot * = 3; (* designed for hires non-interlaced *)
fpWideDot * = 4; (* designed for lores interlaced *)
fpProportional * = 5; (* character sizes can vary from nominal *)
fpDesigned * = 6; (* size explicitly designed, not constructed *)
(* note: if you do not set this bit in your *)
(* textattr, then a font may be constructed *)
(* for you by scaling an existing rom or disk *)
(* font (under V36 and above). *)
(* bit 7 is always clear for fonts on the graphics font list *)
fpRemoved * = 7; (* the font has been removed *)
TYPE
(****** TextAttr node, matches text attributes in RastPort **********)
TextAttr * = RECORD
name * : E.STRPTR; (* name of the font *)
ySize * : E.UWORD; (* height of the font *)
style * : E.BSET; (* intrinsic font style *)
flags * : E.BSET; (* font preferences and flags *)
END; (* TextAttr *)
TTextAttr * = RECORD
name * : E.STRPTR; (* name of the font *)
ySize * : E.UWORD; (* height of the font *)
style * : E.BSET; (* intrinsic font style *)
flags * : E.BSET; (* font preferences and flags *)
tags * : U.TagListPtr; (* extended attributes *)
END; (* TTextAttr *)
CONST
(****** Text Tags ************************************************** *)
deviceDPI * = U.tagUser+1; (* Tag value is Point union: *)
(* Hi word XDPI, Lo word YDPI *)
maxFontMatchweight * = 32767; (* perfect match from WeighTAMatch *)
TYPE
(****** TextFonts node **********************************************)
TextFont * = RECORD (E.Message) (* reply message for font removal *)
(* font name in LN \ used in this *)
ySize * : E.UWORD; (* font height | order to best *)
style * : E.BSET; (* font style | match a font *)
flags * : E.BSET; (* preferences and flags / request. *)
xSize * : E.UWORD; (* nominal font width *)
baseline * : E.UWORD; (* distance from the top of char to baseline *)
boldSmear * : E.UWORD; (* smear to affect a bold enhancement *)
accessors * : E.UWORD; (* access count *)
loChar * : CHAR; (* the first character described here *)
hiChar * : CHAR; (* the last character described here *)
charData * : E.APTR; (* the bit character data *)
modulo * : E.UWORD; (* the row modulo for the strike font data *)
charLoc * : E.APTR; (* ptr to location data for the strike font *)
(* 2 words: bit offset then size *)
charSpace * : E.APTR; (* ptr to words of proportional spacing data *)
charKern * : E.APTR; (* ptr to words of kerning data *)
END; (* TextFont *)
CONST
(* ----- TextFontExtension.flags0 (partial definition) ---------------------------- *)
te0NoRemFont * = 0; (* disallow RemFont for this font *)
TYPE
TextFontExtension * = RECORD
matchWord * : E.UWORD; (* a magic cookie for the extension *)
flags0 : E.BSET; (* (system private flags) *)
flags1 : E.BSET; (* (system private flags) *)
backPtr * : TextFontPtr; (* validation of compilation *)
origReplyPort * : E.MsgPortPtr; (* original value in tfExtension *)
tags * : U.TagListPtr; (* Text Tags for the font *)
oFontPatchS : E.APTR; (* (system private use) *)
oFontPatchK : E.APTR; (* (system private use) *)
(* this space is reserved for future expansion *)
END; (* TextFontExtension *)
CONST
(****** ColorTextFont node ******************************************)
(* ----- ctfFlags -------------------------------------------------- *)
ctColorMask * = {0..3}; (* mask to get to following color styles *)
ctColorFont * = 0; (* color map contains designer's colors *)
ctGreyFont * = 1; (* color map describes even-stepped *)
(* brightnesses from low to high *)
ctAntiAlias * = 2; (* zero background thru fully saturated char *)
ctMapColor * = 0; (* map ctfFgColor to the rpFgPen if it's *)
(* is a valid color within ctfLow..ctfHigh *)
TYPE
(*----- ColorFontColors --------------------------------------------*)
ColorFontColors * = RECORD
reserved * : E.UWORD; (* *must* be zero *)
count * : E.UWORD; (* number of entries in ColorTable *)
colorTable * : E.APTR; (* 4 bit per component color map packed xRGB *)
END; (* ColorFontColors *)
(*----- ColorTextFont ----------------------------------------------*)
ColorTextFont * = RECORD (TextFont)
ctfFlags * : E.WSET; (* extended flags *)
depth * : E.UBYTE; (* number of bit planes *)
fgColor * : E.UBYTE; (* color that is remapped to FgPen *)
low * : E.UBYTE; (* lowest color represented here *)
high * : E.UBYTE; (* highest color represented here *)
planePick * : E.BSET; (* PlanePick ala Images *)
planeOnOff * : E.BSET; (* PlaneOnOff ala Images *)
colorFontColors * : ColorFontColorsPtr; (* colors for font *)
ctfCharData * : ARRAY 8 OF E.APTR; (* pointers to bit planes ala tfCharData *)
END; (* ColorTextFont *)
(****** TextExtent node *********************************************)
TextExtent * = RECORD
width * : E.UWORD; (* same as TextLength *)
height * : E.UWORD; (* same as tfYSize *)
extent * : Rectangle; (* relative to CP *)
END; (* TextExtent *)
(*
** $VER: videocontrol.h 39.8 (31.5.93)
**
** definitions for videocontrol commands
*)
CONST
vtagEndCM * = 00000000H;
vtagChromaKeyClr * = 80000000H;
vtagChromaKeySet * = 80000001H;
vtagBitPlaneKeyClr * = 80000002H;
vtagBitPlaneKeySet * = 80000003H;
vtagBorderBlankClr * = 80000004H;
vtagBorderBlankSet * = 80000005H;
vtagBorderNoTransClr * = 80000006H;
vtagBorderNoTransSet * = 80000007H;
vtagChromaPenClr * = 80000008H;
vtagChromaPenSet * = 80000009H;
vtagChromaPlaneSet * = 8000000AH;
vtagAttachCMSet * = 8000000BH;
vtagNextBufCM * = 8000000CH;
vtagBatchCMClr * = 8000000DH;
vtagBatchCMSet * = 8000000EH;
vtagNormalDispGet * = 8000000FH;
vtagNormalDispSet * = 80000010H;
vtagCoerceDispGet * = 80000011H;
vtagCoerceDispSet * = 80000012H;
vtagViewPortExtraGet * = 80000013H;
vtagViewPortExtraSet * = 80000014H;
vtagChromaKeyGet * = 80000015H;
vtagBitplaneKeyGet * = 80000016H;
vtagBorderBlankGet * = 80000017H;
vtagBorderNoTransGet * = 80000018H;
vtagChromaPenGet * = 80000019H;
vtagChromaPlaneGet * = 8000001AH;
vtagAttachCMGet * = 8000001BH;
vtagBatchCMGet * = 8000001CH;
vtagBatchItemsGet * = 8000001DH;
vtagBatchItemsSet * = 8000001EH;
vtagBatchItemsAdd * = 8000001FH;
vtagVPModeIDGet * = 80000020H;
vtagVPModeIDSet * = 80000021H;
vtagVPModeIDClr * = 80000022H;
vtagUserClipGet * = 80000023H;
vtagUserClipSet * = 80000024H;
vtagUserClipClr * = 80000025H;
(* The following tags are V39 specific. They will be ignored (returing error -3) by
earlier versions *)
vtagPf1BaseGet * = 080000026H;
vtagPf2BaseGet * = 080000027H;
vtagSpEvenBaseGet * = 080000028H;
vtagSpOddBaseGet * = 080000029H;
vtagPf1BaseSet * = 08000002AH;
vtagPf2BaseSet * = 08000002BH;
vtagSpEvenBaseSet * = 08000002CH;
vtagSpOddBaseSet * = 08000002DH;
vtagBorderSpriteGet * = 08000002EH;
vtagBorderSpriteSet * = 08000002FH;
vtagBorderSpriteClr * = 080000030H;
vtagSpriteResnSet * = 080000031H;
vtagSpriteResnGet * = 080000032H;
vtagPf1ToSpritePriSet * = 080000033H;
vtagPf1ToSpritePriGet * = 080000034H;
vtagPf2ToSpritePriSet * = 080000035H;
vtagPf2ToSpritePriGet * = 080000036H;
vtagImmediate * = 080000037H;
vtagFullPaletteSet * = 080000038H;
vtagFullPaletteGet * = 080000039H;
vtagFullPaletteClr * = 08000003AH;
vtagDefSpriteResnSet * = 08000003BH;
vtagDefSpriteResnGet * = 08000003CH;
(* all the following tags follow the new, rational standard for videocontrol tags:
* VC_xxx,state set the state of attribute 'xxx' to value 'state'
* VC_xxx_QUERY,&var get the state of attribute 'xxx' and store it into the longword
* pointed to by &var.
*
* The following are new for V40:
*)
vcIntermediateCLUpdate * = 080000080H;
(* default=true. When set graphics will update the intermediate copper
* lists on color changes, etc. When false, it won't, and will be faster.
*)
vcIntermediateCLUpdateQuery * = 080000081H;
vcNoColorPaletteLoad * = 080000082H;
(* default = false. When set, graphics will only load color 0
* for this ViewPort, and so the ViewPort's colors will come
* from the previous ViewPort's.
*
* NB - Using this tag and VTAG_FULLPALETTE_SET together is undefined.
*)
vcNoColorPaletteLoadQuery * = 080000083H;
vcDualPFDisable * = 080000084H;
(* default = false. When this flag is set, the dual-pf bit
in Dual-Playfield screens will be turned off. Even bitplanes
will still come from the first BitMap and odd bitplanes
from the second BitMap, and both R[xy]Offsets will be
considered. This can be used (with appropriate palette
selection) for cross-fades between differently scrolling
images.
When this flag is turned on, colors will be loaded for
the viewport as if it were a single viewport of depth
depth1+depth2 *)
vcDualPFDisableQuery * = 080000085H;
(*
** $VER: graphint.h 39.0 (23.9.91)
**
** structure used by AddTOFTask
*)
TYPE
Isrvstr * = RECORD (E.Node)
iptr * : IsrvstrPtr; (* passed to srvr by os *)
code * : E.PROC;
ccode * : E.PROC;
carg * : LONGINT;
END; (* Isrvstr *)
(*
** $VER: scale.h 39.0 (21.8.91)
**
** structure argument to BitMapScale()
*)
TYPE
BitScaleArgs * = RECORD
srcX *, srcY * : E.UWORD; (* source origin *)
srcWidth *, srcHeight * : E.UWORD; (* source size *)
xSrcFactor *, ySrcFactor * : E.UWORD; (* scale factor denominators *)
destX *, destY * : E.UWORD; (* destination origin *)
destWidth *, destHeight * : E.UWORD; (* destination size result *)
xDestFactor *, yDestFactor * : E.UWORD; (* scale factor numerators *)
srcBitMap * : BitMapPtr; (* source BitMap *)
destBitMap * : BitMapPtr; (* destination BitMap *)
flags * : E.ULONG; (* reserved. Must be zero! *)
xdda, ydda : E.UWORD; (* reserved *)
reserved1 : LONGINT;
reserved2 : LONGINT;
END; (* BitScaleArgs *)
(*
** $VER: coerce.h 39.3 (15.2.93)
**
** mode coercion definitions
*)
(* These flags are passed (in combination) to CoerceMode() to determine the
* type of coercion required.
*)
CONST
(* Ensure that the mode coerced to can display just as many colours as the
* ViewPort being coerced.
*)
preserveColors * = 1;
(* Ensure that the mode coerced to is not interlaced. *)
avoidFlicker * = 2;
(* Coercion should ignore monitor compatibility issues. *)
ignoreMCompat * = 4;
bidTagCoerce = 1; (* Private *)
(*
** $VER: rpattr.h 39.2 (31.5.93)
**
** tag definitions for GetRPAttr, SetRPAttr
*)
CONST
rpTagFont * = 080000000H; (* get/set font *)
rpTagAPen * = 080000002H; (* get/set apen *)
rpTagBPen * = 080000003H; (* get/set bpen *)
rpTagDrMd * = 080000004H; (* get/set draw mode *)
rpTagOutLinePen * = 080000005H; (* get/set outline pen *)
rpTagOutlinePen * = 080000005H; (* get/set outline pen. corrected case. *)
rpTagWriteMask * = 080000006H; (* get/set WriteMask *)
rpTagMaxPen * = 080000007H; (* get/set maxpen *)
rpTagDrawBounds * = 080000008H; (* get only rastport draw bounds. pass &rect *)
(*
** $VER: gfxbase.h 39.21 (21.4.93)
**
** graphics base definitions
*)
TYPE
GfxBasePtr * = CPOINTER TO GfxBase;
GfxBase * = RECORD (E.Library)
actiView * : ViewPtr;
copinit * : CopinitPtr; (* ptr to copper start up list *)
cia * : E.APTR; (* for 8520 resource use *)
blitter * : E.APTR; (* for future blitter resource use *)
loFlist * : E.APTR;
shFlist * : E.APTR;
blthd *, blttl * : H.BltnodePtr;
bsblthd *, bsblttl * : H.BltnodePtr;
vbsrv *, timsrv *, bltsrv * : E.Interrupt;
textFonts * : E.List;
defaultFont * : TextFontPtr;
modes * : E.WSET; (* copy of current first bplcon0 *)
vBlank * : SHORTINT;
debug * : SHORTINT;
beamSync * : INTEGER;
systembplcon0 * : E.WSET; (* it is ored into each bplcon0 for display *)
spriteReserved * : E.UBYTE;
bytereserved * : E.UBYTE;
Flags * : E.WSET;
blitLock * : INTEGER;
blitNest * : INTEGER;
blitWaitQ * : E.List;
blitOwner * : E.TaskPtr;
tofWaitQ * : E.List;
displayFlags * : E.WSET; (* NTSC PAL GENLOC etc *)
(* flags initialized at power on *)
simpleSprites * : SimpleSpritePtr;
maxDisplayRow * : E.UWORD; (* hardware stuff, do not use *)
maxDisplayColumn * : E.UWORD; (* hardware stuff, do not use *)
normalDisplayRows * : E.UWORD;
normalDisplayColumns * : E.UWORD;
(* the following are for standard non interlace, 1/2 wb width *)
normalDPMX * : E.UWORD; (* Dots per meter on display *)
normalDPMY * : E.UWORD; (* Dots per meter on display *)
lastChanceMemory * : E.SignalSemaphorePtr;
lcMptr * : E.APTR;
microsPerLine * : E.UWORD; (* 256 time usec/line *)
minDisplayColumn * : E.UWORD;
chipRevBits0 * : E.BSET;
memType * : E.UBYTE;
reserved * : ARRAY 4 OF E.UBYTE;
monitorid * : E.UWORD; (* normally null *)
hedley * : ARRAY 8 OF E.ULONG;
hedleySprites * : ARRAY 8 OF E.ULONG; (* sprite ptrs for intuition mouse *)
hedleySprites1 * : ARRAY 8 OF E.ULONG; (* sprite ptrs for intuition mouse *)
hedleyCount * : INTEGER;
hedleyFlags * : E.WSET;
hedleyTmp * : INTEGER;
hashTable * : E.APTR;
currentTotRows * : E.UWORD;
currentTotCclks * : E.UWORD;
hedleyHint * : E.UBYTE;
hedleyHint2 * : E.UBYTE;
nreserved * : ARRAY 4 OF E.ULONG;
a2024SyncRaster * : E.APTR;
controlDeltaPAL * : INTEGER;
controlDeltaNTSC * : INTEGER;
currentMonitor * : MonitorSpecPtr;
monitorList * : E.List;
defaultMonitor * : MonitorSpecPtr;
monitorListSemaphore * : E.SignalSemaphorePtr;
displayInfoDataBase * : E.APTR;
topLine * : INTEGER;
actiViewCprSemaphore * : E.SignalSemaphorePtr;
utilBase * : E.LibraryPtr; (* for hook and tag utilities *)
execBase * : E.LibraryPtr; (* to link with rom.lib *)
bwshifts * : E.APTR;
strtFetchMasks * : E.APTR;
stopFetchMasks * : E.APTR;
overrun * : E.APTR;
realStops * : E.APTR;
spriteWidth * : E.UWORD; (* current width (in words) of sprites *)
spriteFMode * : E.UWORD; (* current sprite fmode bits *)
softSprites * : SHORTINT; (* bit mask of size change knowledgeable sprites *)
arraywidth * : SHORTINT;
defaultSpriteWidth * : E.UWORD; (* what width intuition wants *)
sprMoveDisable * : SHORTINT;
wantChips * : E.UBYTE;
boardMemType * : E.UBYTE;
bugs * : E.UBYTE;
layersBase * : E.APTR;
colorMask * : E.ULONG;
iVector * : E.APTR;
iData * : E.APTR;
specialCounter * : E.ULONG; (* special for double buffering *)
dBList * : E.APTR;
monitorFlags * : E.WSET;
scanDoubledSprites * : E.UBYTE;
bP3Bits * : E.UBYTE;
monitorVBlank * : AnalogSignalInterval;
monitor * : MonitorSpecPtr;
progData * : E.APTR;
extSprites * : E.UBYTE;
pad3 * : E.UBYTE;
gfxFlags * : E.WSET;
vBCounter * : E.ULONG;
hashTableSemaphore * : E.SignalSemaphorePtr;
hWEmul * : ARRAY 9 OF E.APTR;
END; (* GfxBase *)
CONST
(* Values for gfxBase.displayFlags *)
ntsc * = 1;
genloc * = 2;
pal * = 4;
todaSafe * = 8;
reallyPAL * = 16; (* what is actual crystal frequency
(as opposed to what bootmenu set the agnus to)?
(V39) *)
lpenSwapFrames * = 32;
(* LightPen software could set this bit if the
* "lpen-with-interlace" fix put in for V39
* does not work. This is true of a number of
* Agnus chips.
* (V40).
*)
blitMsgFault * = 4;
(* bits defs for ChipRevBits *)
bigBlits * = 0;
hrAgnus * = 0;
hrDenise * = 1;
aaAlice * = 2;
aaLisa * = 3;
aaMLisa = 4; (* internal use only. *)
(* Pass ONE of these to SetChipRev() *)
setChipRevA * = {hrAgnus};
setChipRevECS * = {hrAgnus, hrDenise};
setChipRevAA * = {aaAlice, aaLisa} + setChipRevECS;
setChipRevBest * = {0..31};
(* memory type *)
bus16 * = 0;
nmlCAS * = 0;
bus32 * = 1;
dblCAS * = 2;
bandwidth1x * = {bus16, nmlCAS};
bandwidth2xNml * = {bus32};
bandwidth2xDbl * = {dblCAS};
bandwidth4x * = {bus32, dblCAS};
(* GfxFlags (private) *)
newDatabase = 1;
name * = "graphics.library";
(**-- Library Base variable --------------------------------------------*)
VAR
base * : GfxBasePtr;
(**-- Library Functions ------------------------------------------------*)
(*
** $VER: graphics_protos.h 39.31 (29.4.93)
*)
TYPE
CollisionProc* = PROCEDURE (GELA, GELB : VSpritePtr);
(* ------ BitMap primitives ------*)
LIBCALL (base : GfxBasePtr) BltBitMap*
( srcBitMap [8] : BitMapPtr;
xSrc [0] : INTEGER;
ySrc [1] : INTEGER;
destBitMap [9] : BitMapPtr;
xDest [2] : INTEGER;
yDest [3] : INTEGER;
xSize [4] : INTEGER;
ySize [5] : INTEGER;
minterm [6] : E.UBYTE;
mask [7] : E.BSET;
tempA [10] : PlanePtr )
: E.ULONG;
-30;
LIBCALL (base : GfxBasePtr) BltTemplate*
( source [8] : PlanePtr;
xSrc [0] : INTEGER;
srcMod [1] : INTEGER;
destRP [9] : RastPortPtr;
xDest [2] : INTEGER;
yDest [3] : INTEGER;
xSize [4] : INTEGER;
ySize [5] : INTEGER );
-36;
(* ------ Text routines ------*)
LIBCALL (base : GfxBasePtr) ClearEOL*
( rp [9] : RastPortPtr );
-42;
LIBCALL (base : GfxBasePtr) ClearScreen*
( rp [9] : RastPortPtr );
-48;
LIBCALL (base : GfxBasePtr) TextLength*
( rp [9] : RastPortPtr;
string [8] : ARRAY OF CHAR;
count [0] : LONGINT )
: INTEGER;
-54;
LIBCALL (base : GfxBasePtr) Text*
( rp [9] : RastPortPtr;
string [8] : ARRAY OF CHAR;
count [0] : LONGINT );
-60;
LIBCALL (base : GfxBasePtr) SetFont*
( rp [9] : RastPortPtr;
textFont [8] : TextFontPtr );
-66;
LIBCALL (base : GfxBasePtr) OpenFont*
( VAR textAttr [8] : TextAttr )
: TextFontPtr;
-72;
LIBCALL (base : GfxBasePtr) CloseFont*
( textFont [9] : TextFontPtr );
-78;
LIBCALL (base : GfxBasePtr) AskSoftStyle*
( rp [9] : RastPortPtr )
: E.BSET;
-84;
LIBCALL (base : GfxBasePtr) SetSoftStyle*
( rp [9] : RastPortPtr;
style [0] : E.BSET;
enable [1] : E.BSET )
: E.BSET;
-90;
(* ------ Gels routines ------*)
LIBCALL (base : GfxBasePtr) AddBob*
( bob [8] : BobPtr;
rp [9] : RastPortPtr );
-96;
LIBCALL (base : GfxBasePtr) AddVSprite*
( vSprite [8] : VSpritePtr;
rp [9] : RastPortPtr );
-102;
LIBCALL (base : GfxBasePtr) DoCollision*
( rp [9] : RastPortPtr );
-108;
LIBCALL (base : GfxBasePtr) DrawGList*
( rp [9] : RastPortPtr;
vp [8] : ViewPortPtr );
-114;
LIBCALL (base : GfxBasePtr) InitGels*
( head [8] : VSpritePtr;
tail [9] : VSpritePtr;
gelsInfo [10] : GelsInfoPtr );
-120;
LIBCALL (base : GfxBasePtr) InitMasks*
( vSprite [0] : VSpritePtr );
-126;
LIBCALL (base : GfxBasePtr) RemIBob*
( bob [8] : BobPtr;
rp [9] : RastPortPtr;
vp [10] : ViewPortPtr );
-132;
LIBCALL (base : GfxBasePtr) RemVSprite*
( vSprite [8] : VSpritePtr );
-138;
LIBCALL (base : GfxBasePtr) SetCollision*
( num [0] : E.ULONG;
routine [8] : CollisionProc;
gelsInfo [9] : GelsInfoPtr );
-144;
LIBCALL (base : GfxBasePtr) SortGList*
( rp [9] : RastPortPtr );
-150;
LIBCALL (base : GfxBasePtr) AddAnimOb*
( anOb [8] : AnimObPtr;
VAR anKey [9] : AnimObPtr;
rp [10] : RastPortPtr );
-156;
LIBCALL (base : GfxBasePtr) Animate*
( VAR anKey [8] : AnimObPtr;
rp [9] : RastPortPtr );
-162;
LIBCALL (base : GfxBasePtr) GetGBuffers*
( anOb [8] : AnimObPtr;
rp [9] : RastPortPtr;
flag [0] : BOOLEAN )
: BOOLEAN;
-168;
LIBCALL (base : GfxBasePtr) InitGMasks*
( anOb [8] : AnimObPtr );
-174;
(* ------ General graphics routines ------*)
LIBCALL (base : GfxBasePtr) DrawEllipse*
( rp [9] : RastPortPtr;
xCenter [0] : INTEGER;
yCenter [1] : INTEGER;
a [2] : INTEGER;
b [3] : INTEGER );
-180;
LIBCALL (base : GfxBasePtr) AreaEllipse*
( rp [9] : RastPortPtr;
xCenter [0] : INTEGER;
yCenter [1] : INTEGER;
a [2] : INTEGER;
b [3] : INTEGER )
: BOOLEAN;
-186;
LIBCALL (base : GfxBasePtr) LoadRGB4*
( vp [8] : ViewPortPtr;
colors [1] : ARRAY OF E.UWORD;
count [0] : LONGINT );
-192;
LIBCALL (base : GfxBasePtr) InitRastPort*
( VAR rp [9] : RastPort );
-198;
LIBCALL (base : GfxBasePtr) InitVPort*
( VAR vp [8] : ViewPort );
-204;
LIBCALL (base : GfxBasePtr) OldMrgCop*
( view [9] : ViewPtr );
-210;
LIBCALL (base : GfxBasePtr) MrgCop*
( view [9] : ViewPtr )
: LONGINT;
-210;
LIBCALL (base : GfxBasePtr) MakeVPort*
( view [8] : ViewPtr;
vp [9] : ViewPortPtr );
-216;
LIBCALL (base : GfxBasePtr) LoadView*
( view [9] : ViewPtr );
-222;
LIBCALL (base : GfxBasePtr) WaitBlit* ();
-228;
LIBCALL (base : GfxBasePtr) SetRast*
( rp [9] : RastPortPtr;
pen [0] : E.UBYTE );
-234;
LIBCALL (base : GfxBasePtr) Move*
( rp [9] : RastPortPtr;
x [0] : INTEGER;
y [1] : INTEGER );
-240;
LIBCALL (base : GfxBasePtr) Draw*
( rp [9] : RastPortPtr;
x [0] : INTEGER;
y [1] : INTEGER );
-246;
LIBCALL (base : GfxBasePtr) AreaMove*
( rp [9] : RastPortPtr;
x [0] : INTEGER;
y [1] : INTEGER )
: BOOLEAN;
-252;
LIBCALL (base : GfxBasePtr) AreaDraw*
( rp [9] : RastPortPtr;
x [0] : INTEGER;
y [1] : INTEGER )
: BOOLEAN;
-258;
LIBCALL (base : GfxBasePtr) AreaEnd*
( rp [9] : RastPortPtr )
: BOOLEAN;
-264;
LIBCALL (base : GfxBasePtr) WaitTOF* ();
-270;
LIBCALL (base : GfxBasePtr) QBlit*
( blit [9] : H.BltnodePtr );
-276;
LIBCALL (base : GfxBasePtr) InitArea*
( VAR areaInfo [8] : AreaInfo;
vectorBuffer [9] : E.APTR;
maxVectors [0] : LONGINT );
-282;
LIBCALL (base : GfxBasePtr) SetRGB4*
( vp [8] : ViewPortPtr;
index [0] : LONGINT;
red [1] : E.UBYTE;
green [2] : E.UBYTE;
blue [3] : E.UBYTE );
-288;
LIBCALL (base : GfxBasePtr) QBSBlit*
( blit [9] : H.BltnodePtr );
-294;
LIBCALL (base : GfxBasePtr) BltClear*
( memBlock [9] : PlanePtr;
byteCount [0] : E.ULONG;
flags [1] : SET );
-300;
LIBCALL (base : GfxBasePtr) RectFill*
( rp [9] : RastPortPtr;
xMin [0] : INTEGER;
yMin [1] : INTEGER;
xMax [2] : INTEGER;
yMax [3] : INTEGER );
-306;
LIBCALL (base : GfxBasePtr) BltPattern*
( rp [9] : RastPortPtr;
mask [8] : PlanePtr;
xMin [0] : INTEGER;
yMin [1] : INTEGER;
xMax [2] : INTEGER;
yMax [3] : INTEGER;
maskBPR [4] : INTEGER );
-312;
LIBCALL (base : GfxBasePtr) ReadPixel*
( rp [9] : RastPortPtr;
x [0] : INTEGER;
y [1] : INTEGER )
: LONGINT;
-318;
LIBCALL (base : GfxBasePtr) WritePixel*
( rp [9] : RastPortPtr;
x [0] : INTEGER;
y [1] : INTEGER )
: BOOLEAN;
-324;
LIBCALL (base : GfxBasePtr) Flood*
( rp [9] : RastPortPtr;
mode [2] : E.ULONG;
x [0] : INTEGER;
y [1] : INTEGER )
: BOOLEAN;
-330;
LIBCALL (base : GfxBasePtr) PolyDraw*
( rp [9] : RastPortPtr;
count [0] : INTEGER;
polyTable [8] : ARRAY OF Point );
-336;
LIBCALL (base : GfxBasePtr) PolyDrawList*
( rp [9] : RastPortPtr;
count [0] : INTEGER;
polyTable [8].. : INTEGER );
-336;
LIBCALL (base : GfxBasePtr) SetAPen*
( rp [9] : RastPortPtr;
pen [0] : E.UBYTE );
-342;
LIBCALL (base : GfxBasePtr) SetBPen*
( rp [9] : RastPortPtr;
pen [0] : E.UBYTE );
-348;
LIBCALL (base : GfxBasePtr) SetDrMd*
( rp [9] : RastPortPtr;
drawMode [0] : E.BSET );
-354;
LIBCALL (base : GfxBasePtr) InitView*
( VAR view [9] : View );
-360;
LIBCALL (base : GfxBasePtr) CBump*
( copList [9] : UCopListPtr );
-366;
LIBCALL (base : GfxBasePtr) CMove*
( copList [9] : UCopListPtr;
destination [0] : E.APTR;
data [1] : E.UWORD );
-372;
LIBCALL (base : GfxBasePtr) CWait*
( copList [9] : UCopListPtr;
v [0] : INTEGER;
h [1] : INTEGER );
-378;
LIBCALL (base : GfxBasePtr) VBeamPos* ()
: LONGINT;
-384;
LIBCALL (base : GfxBasePtr) InitBitMap*
( VAR bitMap [8] : BitMap;
depth [0] : SHORTINT;
width [1] : INTEGER;
height [2] : INTEGER );
-390;
LIBCALL (base : GfxBasePtr) ScrollRaster*
( rp [9] : RastPortPtr;
dx [0] : INTEGER;
dy [1] : INTEGER;
xMin [2] : INTEGER;
yMin [3] : INTEGER;
xMax [4] : INTEGER;
yMax [5] : INTEGER );
-396;
LIBCALL (base : GfxBasePtr) WaitBOVP*
( vp [8] : ViewPortPtr );
-402;
LIBCALL (base : GfxBasePtr) GetSprite*
( VAR sprite [8] : SimpleSprite;
num [0] : INTEGER )
: INTEGER;
-408;
LIBCALL (base : GfxBasePtr) FreeSprite*
( num [0] : INTEGER );
-414;
LIBCALL (base : GfxBasePtr) ChangeSprite*
( vp [8] : ViewPortPtr;
VAR sprite [9] : SimpleSprite;
newData [10] : PlanePtr );
-420;
LIBCALL (base : GfxBasePtr) MoveSprite*
( vp [8] : ViewPortPtr;
VAR sprite [9] : SimpleSprite;
x [0] : INTEGER;
y [1] : INTEGER );
-426;
LIBCALL (base : GfxBasePtr) LockLayerRom*
( layer [13] : LayerPtr );
-432;
LIBCALL (base : GfxBasePtr) UnlockLayerRom*
( layer [13] : LayerPtr );
-438;
LIBCALL (base : GfxBasePtr) SyncSBitMap*
( layer [8] : LayerPtr );
-444;
LIBCALL (base : GfxBasePtr) CopySBitMap*
( layer [8] : LayerPtr );
-450;
LIBCALL (base : GfxBasePtr) OwnBlitter* ();
-456;
LIBCALL (base : GfxBasePtr) DisownBlitter* ();
-462;
LIBCALL (base : GfxBasePtr) InitTmpRas*
( VAR tmpRas [8] : TmpRas;
buffer [9] : PlanePtr;
size [0] : E.ULONG );
-468;
LIBCALL (base : GfxBasePtr) AskFont*
( rp [9] : RastPortPtr;
VAR textAttr [8] : TextAttr );
-474;
LIBCALL (base : GfxBasePtr) AddFont*
( textFont [9] : TextFontPtr );
-480;
LIBCALL (base : GfxBasePtr) RemFont*
( textFont [9] : TextFontPtr );
-486;
LIBCALL (base : GfxBasePtr) AllocRaster*
( width [0] : E.UWORD;
height [1] : E.UWORD )
: PlanePtr;
-492;
LIBCALL (base : GfxBasePtr) FreeRaster*
( p [8] : PlanePtr;
width [0] : E.UWORD;
height [1] : E.UWORD );
-498;
LIBCALL (base : GfxBasePtr) AndRectRegion*
( region [8] : RegionPtr;
VAR rectangle [9] : Rectangle );
-504;
LIBCALL (base : GfxBasePtr) OrRectRegion*
( region [8] : RegionPtr;
VAR rectangle [9] : Rectangle )
: BOOLEAN;
-510;
LIBCALL (base : GfxBasePtr) NewRegion* ()
: RegionPtr;
-516;
LIBCALL (base : GfxBasePtr) ClearRectRegion*
( region [8] : RegionPtr;
VAR rectangle [9] : Rectangle )
: BOOLEAN;
-522;
LIBCALL (base : GfxBasePtr) ClearRegion*
( region [8] : RegionPtr );
-528;
LIBCALL (base : GfxBasePtr) DisposeRegion*
( region [8] : RegionPtr );
-534;
LIBCALL (base : GfxBasePtr) FreeVPortCopLists*
( vp [8] : ViewPortPtr );
-540;
LIBCALL (base : GfxBasePtr) FreeCopList*
( copList [8] : CopListBasePtr );
-546;
LIBCALL (base : GfxBasePtr) ClipBlit* (
srcRP [8] : RastPortPtr;
xSrc [0] : INTEGER;
ySrc [1] : INTEGER;
destRP [9] : RastPortPtr;
xDest [2] : INTEGER;
yDest [3] : INTEGER;
xSize [4] : INTEGER;
ySize [5] : INTEGER;
minterm [6] : E.UBYTE );
-552;
LIBCALL (base : GfxBasePtr) XorRectRegion*
( region [8] : RegionPtr;
VAR rectangle [9] : Rectangle )
: BOOLEAN;
-558;
LIBCALL (base : GfxBasePtr) FreeCprList*
( cprList [8] : CprlistPtr );
-564;
LIBCALL (base : GfxBasePtr) GetColorMap*
( entries [0] : LONGINT )
: ColorMapPtr;
-570;
LIBCALL (base : GfxBasePtr) FreeColorMap*
( colorMap [8] : ColorMapPtr );
-576;
LIBCALL (base : GfxBasePtr) GetRGB4*
( colorMap [8] : ColorMapPtr;
entry [0] : LONGINT )
: INTEGER;
-582;
LIBCALL (base : GfxBasePtr) ScrollVPort*
( vp [8] : ViewPortPtr );
-588;
LIBCALL (base : GfxBasePtr) UCopperListInit*
( uCopList [8] : UCopListPtr;
n [0] : LONGINT )
: CopListBasePtr;
-594;
LIBCALL (base : GfxBasePtr) FreeGBuffers*
( anOb [8] : AnimObPtr;
rp [9] : RastPortPtr;
flag [0] : BOOLEAN );
-600;
LIBCALL (base : GfxBasePtr) BltBitMapRastPort*
( srcBitMap [8] : BitMapPtr;
xSrc [0] : INTEGER;
ySrc [1] : INTEGER;
destRP [9] : RastPortPtr;
xDest [2] : INTEGER;
yDest [3] : INTEGER;
xSize [4] : INTEGER;
ySize [5] : INTEGER;
minterm [6] : E.UBYTE )
: BOOLEAN;
-606;
LIBCALL (base : GfxBasePtr) OrRegionRegion*
( srcRegion [8] : RegionPtr;
destRegion [9] : RegionPtr )
: BOOLEAN;
-612;
LIBCALL (base : GfxBasePtr) XorRegionRegion*
( srcRegion [8] : RegionPtr;
destRegion [9] : RegionPtr )
: BOOLEAN;
-618;
LIBCALL (base : GfxBasePtr) AndRegionRegion*
( srcRegion [8] : RegionPtr;
destRegion [9] : RegionPtr )
: BOOLEAN;
-624;
LIBCALL (base : GfxBasePtr) SetRGB4CM* (
colorMap [8] : ColorMapPtr;
index [0] : INTEGER;
red [1] : E.UBYTE;
green [2] : E.UBYTE;
blue [3] : E.UBYTE );
-630;
LIBCALL (base : GfxBasePtr) BltMaskBitMapRastPort* (
srcBitMap [8] : BitMapPtr;
xSrc [0] : INTEGER;
ySrc [1] : INTEGER;
destRP [9] : RastPortPtr;
xDest [2] : INTEGER;
yDest [3] : INTEGER;
xSize [4] : INTEGER;
ySize [5] : INTEGER;
minterm [6] : E.UBYTE;
bltMask [10] : PlanePtr );
-636;
LIBCALL (base : GfxBasePtr) AttemptLockLayerRom*
( layer [13] : LayerPtr )
: BOOLEAN;
-654;
(* --- functions in V36 or higher (distributed as Release 2.0) ---*)
LIBCALL (base : GfxBasePtr) GfxNew*
( gfxNodeType [0] : E.ULONG )
: ExtendedNodePtr;
-660;
LIBCALL (base : GfxBasePtr) GfxFree*
( gfxNodePtr [8] : ExtendedNodePtr );
-666;
LIBCALL (base : GfxBasePtr) GfxAssociate*
( associateNode [8] : ExtendedNodePtr;
gfxNodePtr [9] : ExtendedNodePtr );
-672;
LIBCALL (base : GfxBasePtr) BitMapScale*
( bitScaleArgs [8] : BitScaleArgsPtr );
-678;
LIBCALL (base : GfxBasePtr) ScalerDiv*
( factor [0] : E.ULONG;
numerator [1] : E.ULONG;
denominator [2] : E.ULONG )
: E.UWORD;
-684;
LIBCALL (base : GfxBasePtr) TextExtent*
( rp [9] : RastPortPtr;
string [8] : ARRAY OF CHAR;
count [0] : LONGINT;
VAR textExtent [10] : TextExtent )
: INTEGER;
-690;
LIBCALL (base : GfxBasePtr) TextFit*
( rp [9] : RastPortPtr;
string [8] : ARRAY OF CHAR;
strLen [0] : E.ULONG;
textExtent [10] : TextExtentPtr;
constrainingExtent [11] : TextExtentPtr;
strDirection [1] : LONGINT;
constrainingBitWidth [2] : E.ULONG;
constrainingBitHeight [3] : E.ULONG )
: E.ULONG;
-696;
LIBCALL (base : GfxBasePtr) GfxLookUp*
( associateNode [8] : ExtendedNodePtr )
: E.APTR;
-702;
LIBCALL (base : GfxBasePtr) VideoControlA*
( colorMap [8] : ColorMapPtr;
tagarray [9] : ARRAY OF U.TagItem )
: BOOLEAN;
-708;
LIBCALL (base : GfxBasePtr) VideoControl*
( colorMap [8] : ColorMapPtr;
tagarray [9].. : U.Tag )
: BOOLEAN;
-708;
LIBCALL (base : GfxBasePtr) OpenMonitor*
( monitorName [9] : ARRAY OF CHAR;
displayID [0] : E.ULONG )
: MonitorSpecPtr;
-714;
LIBCALL (base : GfxBasePtr) CloseMonitor*
( monitorSpec [8] : MonitorSpecPtr )
: BOOLEAN;
-720;
LIBCALL (base : GfxBasePtr) FindDisplayInfo*
( displayID [0] : E.ULONG )
: DisplayInfoHandle;
-726;
LIBCALL (base : GfxBasePtr) NextDisplayInfo*
( displayID [0] : E.ULONG )
: E.ULONG;
-732;
LIBCALL (base : GfxBasePtr) GetDisplayInfoData*
( handle [8] : DisplayInfoHandle;
VAR buf [9] : ARRAY OF SYS.BYTE;
size [0] : E.ULONG;
tagID [1] : E.ULONG;
displayID [2] : E.ULONG )
: E.ULONG;
-756;
LIBCALL (base : GfxBasePtr) FontExtent*
( font [8] : TextFontPtr;
VAR fontExtent [9] : TextExtent );
-762;
LIBCALL (base : GfxBasePtr) ReadPixelLine8*
( rp [8] : RastPortPtr;
xstart [0] : E.UWORD;
ystart [1] : E.UWORD;
width [2] : E.ULONG;
VAR array [10] : ARRAY OF SYS.BYTE;
tempRP [9] : RastPortPtr )
: LONGINT;
-768;
LIBCALL (base : GfxBasePtr) WritePixelLine8*
( rp [8] : RastPortPtr;
xstart [0] : E.UWORD;
ystart [1] : E.UWORD;
width [2] : E.ULONG;
array [10] : ARRAY OF SYS.BYTE;
tempRP [9] : RastPortPtr )
: LONGINT;
-774;
LIBCALL (base : GfxBasePtr) ReadPixelArray8*
( rp [8] : RastPortPtr;
xstart [0] : E.UWORD;
ystart [1] : E.UWORD;
xstop [2] : E.UWORD;
ystop [3] : E.UWORD;
VAR array [10] : ARRAY OF SYS.BYTE;
temprp [9] : RastPortPtr )
: LONGINT;
-780;
LIBCALL (base : GfxBasePtr) WritePixelArray8*
( rp [8] : RastPortPtr;
xstart [0] : E.UWORD;
ystart [1] : E.UWORD;
xstop [2] : E.UWORD;
ystop [3] : E.UWORD;
VAR array [10] : ARRAY OF SYS.BYTE;
temprp [9] : RastPortPtr )
: LONGINT;
-786;
LIBCALL (base : GfxBasePtr) GetVPModeID*
( vp [8] : ViewPortPtr )
: LONGINT;
-792;
LIBCALL (base : GfxBasePtr) ModeNotAvailable*
( modeID [0] : E.ULONG )
: LONGINT;
-798;
LIBCALL (base : GfxBasePtr) WeighTAMatchA*
( VAR reqTextAttr [8] : TextAttr;
VAR targetTextAttr [9] : TextAttr;
targetTags [10] : ARRAY OF U.TagItem )
: INTEGER;
-804;
LIBCALL (base : GfxBasePtr) WeighTAMatch*
( VAR reqTextAttr [8] : TextAttr;
VAR targetTextAttr [9] : TextAttr;
targetTags [10].. : U.Tag )
: INTEGER;
-804;
LIBCALL (base : GfxBasePtr) EraseRect*
( rp [9] : RastPortPtr;
xMin [0] : INTEGER;
yMin [1] : INTEGER;
xMax [2] : INTEGER;
yMax [3] : INTEGER );
-810;
LIBCALL (base : GfxBasePtr) ExtendFontA*
( font [8] : TextFontPtr;
fontTags [9] : ARRAY OF U.TagItem )
: E.ULONG;
-816;
LIBCALL (base : GfxBasePtr) ExtendFont*
( font [8] : TextFontPtr;
fontTags [9].. : U.Tag )
: E.ULONG;
-816;
LIBCALL (base : GfxBasePtr) StripFont*
( font [8] : TextFontPtr );
-822;
(*--- functions in V39 or higher (Release 3) ---*)
LIBCALL (base : GfxBasePtr) CalcIVG *
( v [8] : ViewPtr;
vp [9] : ViewPortPtr )
: E.UWORD;
-828;
LIBCALL (base : GfxBasePtr) AttachPalExtra *
( cm [8] : ColorMapPtr;
vp [9] : ViewPortPtr )
: LONGINT;
-834;
LIBCALL (base : GfxBasePtr) ObtainBestPenA *
( cm [8] : ColorMapPtr;
r [1] : E.ULONG;
g [2] : E.ULONG;
b [3] : E.ULONG;
tags [9] : ARRAY OF U.TagItem )
: LONGINT;
-840;
LIBCALL (base : GfxBasePtr) ObtainBestPen *
( cm [8] : ColorMapPtr;
r [1] : E.ULONG;
g [2] : E.ULONG;
b [3] : E.ULONG;
tags [9]..: U.Tag )
: LONGINT;
-840;
LIBCALL (base : GfxBasePtr) SetRGB32 *
( vp [8] : ViewPortPtr;
n [0] : E.ULONG;
r [1] : E.ULONG;
g [2] : E.ULONG;
b [3] : E.ULONG );
-852;
LIBCALL (base : GfxBasePtr) GetAPen *
( rp [8] : RastPortPtr )
: E.ULONG;
-858;
LIBCALL (base : GfxBasePtr) GetBPen *
( rp [8] : RastPortPtr )
: E.ULONG;
-864;
LIBCALL (base : GfxBasePtr) GetDrMd *
( rp [8] : RastPortPtr )
: SET;
-870;
LIBCALL (base : GfxBasePtr) GetOutlinePen *
( rp [8] : RastPortPtr )
: E.ULONG;
-876;
LIBCALL (base : GfxBasePtr) LoadRGB32 *
( vp [8] : ViewPortPtr;
VAR table [9] : ARRAY OF E.ULONG );
-882;
LIBCALL (base : GfxBasePtr) SetChipRev *
( want [0] : SET )
: SET;
-888;
LIBCALL (base : GfxBasePtr) SetABPenDrMd *
( rp [9] : RastPortPtr;
apen [0] : E.ULONG;
bpen [1] : E.ULONG;
drawmode [2] : E.BSET );
-894;
LIBCALL (base : GfxBasePtr) GetRGB32 *
( cm [8] : ColorMapPtr;
firstcolor [0] : E.ULONG;
ncolors [1] : E.ULONG;
VAR table [9] : ARRAY OF E.ULONG );
-900;
LIBCALL (base : GfxBasePtr) AllocBitMap *
( sizex [0] : E.ULONG;
sizey [1] : E.ULONG;
depth [2] : E.ULONG;
flags [3] : SET;
friendBitmap [8] : BitMapPtr )
: BitMapPtr;
-918;
LIBCALL (base : GfxBasePtr) FreeBitMap *
( bm [8] : BitMapPtr );
-924;
LIBCALL (base : GfxBasePtr) GetExtSpriteA *
( ss [10] : ExtSpritePtr;
tags [9] : ARRAY OF U.TagItem )
: LONGINT;
-930;
LIBCALL (base : GfxBasePtr) GetExtSprite *
( ss [10] : ExtSpritePtr;
tags [9]..: U.Tag )
: LONGINT;
-930;
LIBCALL (base : GfxBasePtr) CoerceMode *
( vp [8] : ViewPortPtr;
monitorid [0] : E.ULONG;
flags [1] : E.ULONG )
: E.ULONG;
-936;
LIBCALL (base : GfxBasePtr) ChangeVPBitMap *
( vp [8] : ViewPortPtr;
bm [9] : BitMapPtr;
db [10] : DBufInfoPtr );
-942;
LIBCALL (base : GfxBasePtr) ReleasePen *
( cm [8] : ColorMapPtr;
n [0] : E.ULONG );
-948;
LIBCALL (base : GfxBasePtr) ObtainPen *
( cm [8] : ColorMapPtr;
n [0] : E.ULONG;
r [1] : E.ULONG;
g [2] : E.ULONG;
b [3] : E.ULONG;
f [4] : LONGINT )
: E.ULONG;
-954;
LIBCALL (base : GfxBasePtr) GetBitMapAttr *
( bm [8] : BitMapPtr;
attrnum [1] : E.ULONG )
: E.ULONG;
-960;
LIBCALL (base : GfxBasePtr) AllocDBufInfo *
( vp [8] : ViewPortPtr )
: DBufInfoPtr;
-966;
LIBCALL (base : GfxBasePtr) FreeDBufInfo *
( dbi [9] : DBufInfoPtr );
-972;
LIBCALL (base : GfxBasePtr) SetOutlinePen *
( rp [8] : RastPortPtr;
pen [0] : E.ULONG )
: E.ULONG;
-978;
LIBCALL (base : GfxBasePtr) SetWriteMask *
( rp [8] : RastPortPtr;
msk [0] : SET )
: BOOLEAN;
-984;
LIBCALL (base : GfxBasePtr) SetMaxPen *
( rp [8] : RastPortPtr;
maxpen [0] : E.ULONG );
-990;
LIBCALL (base : GfxBasePtr) SetRGB32CM *
( cm [8] : ColorMapPtr;
n [0] : E.ULONG;
r [1] : E.ULONG;
g [2] : E.ULONG;
b [3] : E.ULONG );
-996;
LIBCALL (base : GfxBasePtr) ScrollRasterBF *
( rp [9] : RastPortPtr;
dx [0] : LONGINT;
dy [1] : LONGINT;
xMin [2] : LONGINT;
yMin [3] : LONGINT;
xMax [4] : LONGINT;
yMax [5] : LONGINT );
-1002;
LIBCALL (base : GfxBasePtr) FindColor *
( cm [11] : ColorMapPtr;
r [1] : E.ULONG;
g [2] : E.ULONG;
b [3] : E.ULONG;
maxcolor [4] : LONGINT )
: LONGINT;
-1008;
LIBCALL (base : GfxBasePtr) AllocSpriteDataA *
( bm [10] : BitMapPtr;
tags [9] : ARRAY OF U.TagItem )
: ExtSpritePtr;
-1020;
LIBCALL (base : GfxBasePtr) AllocSpriteData *
( bm [10] : BitMapPtr;
tags [9]..: U.Tag )
: ExtSpritePtr;
-1020;
LIBCALL (base : GfxBasePtr) ChangeExtSpriteA *
( vp [8] : ViewPortPtr;
oldsprite [9] : ExtSpritePtr;
newsprite [10] : ExtSpritePtr;
tags [11] : ARRAY OF U.TagItem )
: LONGINT;
-1026;
LIBCALL (base : GfxBasePtr) ChangeExtSprite *
( vp [8] : ViewPortPtr;
oldsprite [9] : ExtSpritePtr;
newsprite [10] : ExtSpritePtr;
tags [11]..: U.Tag )
: LONGINT;
-1026;
LIBCALL (base : GfxBasePtr) FreeSpriteData *
( sp [10] : ExtSpritePtr );
-1032;
LIBCALL (base : GfxBasePtr) SetRPAttrsA *
( rp [8] : RastPortPtr;
tags [9] : ARRAY OF U.TagItem );
-1038;
LIBCALL (base : GfxBasePtr) SetRPAttrs *
( rp [8] : RastPortPtr;
tags [9]..: U.Tag );
-1038;
LIBCALL (base : GfxBasePtr) GetRPAttrsA *
( rp [8] : RastPortPtr;
tags [9] : ARRAY OF U.TagItem );
-1044;
LIBCALL (base : GfxBasePtr) GetRPAttrs *
( rp [8] : RastPortPtr;
tags [9]..: U.Tag );
-1044;
LIBCALL (base : GfxBasePtr) BestModeIDA *
( tags [8] : ARRAY OF U.TagItem )
: E.ULONG;
-1050;
LIBCALL (base : GfxBasePtr) BestModeID *
( tags [8]..: U.Tag )
: E.ULONG;
-1050;
(*--- functions in V40 or higher (Release 3.1) ---*)
LIBCALL (base : GfxBasePtr) WriteChunkyPixels *
( rp [8] : RastPortPtr;
xstart [0] : E.ULONG;
ystart [1] : E.ULONG;
xstop [2] : E.ULONG;
ystop [3] : E.ULONG;
array [10] : ARRAY OF SYS.BYTE;
bytesperrow [4] : LONGINT );
-1056;
(**-- C Macros defined as procedures -----------------------------------*)
(** $L+ Absolute long addressing for globals *)
(*
** $VER: gfxmacros.h 39.3 (31.5.93)
*)
(**-----------------------------------*)
(* This macro is obsolete as of V39. AllocBitMap() should be used for allocating
bitmap data, since it knows about the machine's particular alignment
restrictions.
*)
PROCEDURE RASSIZE* (w, h : INTEGER) : LONGINT;
BEGIN (* RASSIZE *)
RETURN ( h * (((LONG (w) + 15) DIV 16) * 2))
END RASSIZE;
(**-----------------------------------*)
PROCEDURE OnDisplay* ();
BEGIN (* OnDisplay *)
H.custom.dmacon := {H.dmaSetClr, H.dmaRaster}
END OnDisplay;
(**-----------------------------------*)
PROCEDURE OffDisplay* ();
BEGIN (* OffDisplay *)
H.custom.dmacon := {H.dmaRaster}
END OffDisplay;
(**-----------------------------------*)
PROCEDURE OnSprite* ();
BEGIN (* OnSprite *)
H.custom.dmacon := {H.dmaSetClr, H.dmaSprite}
END OnSprite;
(**-----------------------------------*)
PROCEDURE OffSprite* ();
BEGIN (* OffSprite *)
H.custom.dmacon := {H.dmaSprite}
END OffSprite;
(**-----------------------------------*)
PROCEDURE OnVBlank* ();
BEGIN (* OnVBlank *)
H.custom.intena := {H.intSetClr, H.intVertB}
END OnVBlank;
(**-----------------------------------*)
PROCEDURE OffVBlank* ();
BEGIN (* OffVBlank *)
H.custom.intena := {H.intVertB}
END OffVBlank;
(**-----------------------------------*)
PROCEDURE SetDrPt* (w : RastPortPtr; p : E.UWORD);
BEGIN (* SetDrPt *)
w.linePtrn := p; INCL (w.flags, frstDot); w.linpatcnt := 15
END SetDrPt;
(**-----------------------------------*)
PROCEDURE SetAfPt* (w : RastPortPtr; p : E.APTR; n : SHORTINT);
BEGIN (* SetAfPt *)
w.areaPtrn := p; w.areaPtSz := n
END SetAfPt;
(**-----------------------------------*)
PROCEDURE SetOPen* (w : RastPortPtr; c : SHORTINT);
BEGIN (* SetOPen *)
w.aOlPen := c; INCL (w.flags, areaOutline)
END SetOPen;
(**-----------------------------------*)
PROCEDURE SetWrMsk* (w : RastPortPtr; m : E.BSET);
BEGIN (* SetWrMsk *)
w.mask := m
END SetWrMsk;
(* the SafeSetxxx macros are backwards (pre V39 graphics) compatible versions *)
(* using these macros will make your code do the right thing under V39 AND V37 *)
(**-----------------------------------*)
PROCEDURE SafeSetOutlinePen* (w : RastPortPtr; c : SHORTINT);
VAR ignore : LONGINT;
BEGIN (* SafeSetOutlinePen *)
IF base.version < 39 THEN
w.aOlPen := c; INCL (w.flags, areaOutline)
ELSE
ignore := base.SetOutlinePen (w, c)
END
END SafeSetOutlinePen;
(**-----------------------------------*)
PROCEDURE SafeSetWriteMask* (w : RastPortPtr; m : E.BSET);
VAR ignore : BOOLEAN;
BEGIN (* SafeSetWriteMask *)
IF base.version < 39 THEN
w.mask := m
ELSE
ignore := base.SetWriteMask (w, LONG (LONG (m)))
END
END SafeSetWriteMask;
(**-----------------------------------*)
PROCEDURE BndryOff* (VAR w : RastPort);
BEGIN (* BndryOff *)
EXCL (w.flags, areaOutline)
END BndryOff;
(**-----------------------------------*)
PROCEDURE (VAR base : GfxBase) CINIT* (c : UCopListPtr; n : LONGINT);
BEGIN (* CINIT *)
SYS.PUTREG (0, base.UCopperListInit (c, n))
END CINIT;
(**-----------------------------------*)
PROCEDURE (VAR base : GfxBase) CMOVE*
(c : UCopListPtr; a : E.APTR; b : E.UWORD );
BEGIN (* CMOVE *)
base.CMove (c, a, b); base.CBump (c)
END CMOVE;
(**-----------------------------------*)
PROCEDURE (VAR base : GfxBase) CWAIT*
(c : UCopListPtr; a : INTEGER; b : INTEGER );
BEGIN (* CWAIT *)
base.CWait (c, a, b); base.CBump (c)
END CWAIT;
(**-----------------------------------*)
PROCEDURE (VAR base : GfxBase) CEND* (c : UCopListPtr);
BEGIN (* CEND *)
base.CWAIT (c, 10000, 255)
END CEND;
(**-----------------------------------*)
PROCEDURE (VAR base : GfxBase) DrawCircle*
(rp : RastPortPtr; cx, cy, r : INTEGER);
BEGIN (* DrawCircle *)
base.DrawEllipse (rp, cx, cy, r, r)
END DrawCircle;
(**-----------------------------------*)
PROCEDURE (VAR base : GfxBase) AreaCircle*
(rp : RastPortPtr; cx, cy, r : INTEGER)
: BOOLEAN;
BEGIN (* AreaCircle *)
RETURN base.AreaEllipse (rp, cx, cy, r, r)
END AreaCircle;
(** $L-*)
(**-- Library Base Variable --------------------------------------------*)
PROCEDURE* Close ();
BEGIN (* Close *)
IF base # NIL THEN E.base.CloseLibrary (base) END;
END Close;
BEGIN (* Graphics *)
base :=
SYS.VAL (
GfxBasePtr,
E.base.OpenLibrary (name, E.libraryMinimum));
IF base = NIL THEN HALT (100) END;
SYS.SETCLEANUP (Close)
END Graphics.